Créer un graphique de distribution normale standard en Python

1. Qu'est-ce que la distribution normale standard?

Distribution normale avec moyenne μ = 0, variance σ = 1, Autrement dit, il s'agit d'une fonction exprimée par la formule suivante.

f(x) =  \frac{1}{ \sqrt{2 \pi } } e^{-  \frac{x^2}{2} }

2. Créez votre propre distribution normale standard

Si vous définissez f (x) par vous-même et essayez de mettre [-5,0, -4,999, -4,998, ..., 4,998, 4,999, 5,0] et une séquence de ~ 5,0 ~ 5,0, Vous obtiendrez un graphique qui est communément appelé une distribution normale.

norm_original.py


# coding: utf-8
import numpy as np
import math

# f(x)Écrivez par vous-même
f = lambda x: (math.exp(-x**2/2)) / math.sqrt(2*math.pi)

#Vecteur x[-5.0, ..., 5.0]Créé dans la section de
n = np.linspace(-5.0, 5.0, 10000)

# f(x)Obtenez le résultat de
p = []
for i in range(len(n)):
    p.append(f(n[i]))

#Affichage sur graphique
plt.scatter(n, p)
plt.show()

plt_norm_orig.png

J'ai une belle cloche, mais c'est un peu ennuyeux de la définir une à une. Surtout, il faut du temps pour changer la moyenne ou la variance.

3. Utilisez scipy

Avec le module scipy.stats Dans le code ci-dessus (norm_original.py), la formule définie par l'expression lambda peut être appelée à partir de la fonction.

norm_usescipy.py


# coding: utf-8
import matplotlib.pyplot as plt
import numpy as np
from scipy.stats import norm

#Vecteur x[-5.0, ..., 5.0]Créé dans la section de
n = np.linspace(-5.0, 5.0, 10000)

#Moyenne 0,Trouvez la probabilité de x dans une distribution normale avec un écart type de 1.
p = []
for i in range(len(n)):
    p.append(norm.pdf(x=n[i], loc=0, scale=1))

#Créez un graphique de distribution normale standard en montrant les caractéristiques de la probabilité de nombre aléatoire dans un diagramme de dispersion.
plt.scatter(n, p)
plt.show()

pdf_norm_scipy.png

Puisque vous pouvez spécifier la moyenne et la variance avec l'argument, vous pouvez facilement obtenir une distribution normale avec une forme différente.

4. Regardons l'entropie simultanée de la fonction de distribution cumulative

Dans le chapitre précédent, nous avons utilisé la fonction de densité de probabilité normalement distribuée de scipy.stats.norm.pdf. Jouons maintenant un peu avec et utilisons la fonction de distribution cumulative de la distribution normale de scipy.stats.norm.cdf.

Entropie combinée de Wikipedia (https://ja.wikipedia.org/wiki/%E7%B5%90%E5%90%88%E3%82%A8%E3%83%B3%E3%83%88% E3% 83% AD% E3% 83% 94% E3% 83% BC) Je vais l'écrire en me référant à la description.

L'entropie simultanée (entropie combinée) H (X) représente l'incertitude de la valeur de la variable stochastique X. Lorsque la probabilité que l'événement x appartenant à X se produise est p (x), l'entropie de X est

H(X) = - \sum_{x} p_x log_2 (p_x)

Il est représenté par.

Ici, en supposant que la probabilité est sur la distribution normale standard, si l'entropie est représentée dans un graphe,

norm_usescipy.py


---p.append(norm.pdf(x=n[i], loc=0, scale=1))
+++p.append(norm.cdf(x=n[i], loc=0, scale=1))

cdf_norm.png

Vous pouvez obtenir H (X) comme ça.

Recommended Posts

Créer un graphique de distribution normale standard en Python
Créer une fonction en Python
Créer un conteneur DI avec Python
Implémentation de distribution normale mixte en python
Créer un fichier binaire en Python
Créer une chaîne aléatoire en Python
Créer une application GUI simple en Python
[GPS] Créer un fichier kml avec Python
Créez un environnement de test Vim + Python en 1 minute
Dessiner un graphique d'une fonction quadratique en Python
Créer un fichier GIF en utilisant Pillow en Python
Distribution logistique en Python
Créer un module Python
Créer Spatia Lite en Python
Je veux créer une fenêtre avec Python
Comment créer un fichier JSON en Python
Dessin graphique avec python
Créer un environnement virtuel avec conda avec Python
Créer un modèle d'investissement dynamique simple en Python
Créer une nouvelle page en confluence avec Python
Créer un objet datetime à partir d'une chaîne en Python (Python 3.3)
Créer un package contenant des commandes globales en Python
Créer un environnement Python
Créez un fichier MIDI en Python en utilisant pretty_midi
Créer un modèle d'antenne cadre en Python dans KiCad
Dessiner un graphique avec python
[Docker] Créez un environnement jupyterLab (python) en 3 minutes!
Créer un bot de collecte de données en Python à l'aide de Selenium
[API LINE Messaging] Créez un menu riche avec Python
Jusqu'à dessiner un graphe 3D avec Python dans Windows10
Créer un plugin pour exécuter Python Doctest sur Vim (2)
Créez un plug-in pour exécuter Python Doctest avec Vim (1)
Tracer et comprendre la distribution normale multivariée en Python
En Python, créez un décorateur qui accepte dynamiquement les arguments Créer un décorateur
[Python] Créez un fichier de distribution pour le programme Tkinter avec cx_Freeze
Créez un faux serveur Minecraft en Python avec Quarry
Prendre une capture d'écran en Python
Créer un plugin Wox (Python)
Matrice transposée au standard Python
Générer une distribution U en Python
Créer un bookmarklet en Python
Créer un tableau numpy python
Dessinez un cœur en Python
Créer un répertoire avec python
Changer la destination de sortie standard en un fichier en Python
Créer un compte enfant de connect with Stripe en Python
Créons un script qui s'enregistre avec Ideone.com en Python.
Une note lors de la création d'un graphe dirigé à l'aide de Graphviz en Python
Un moyen standard de développer et de distribuer des packages en Python
Créez le code qui renvoie "A et prétendant B" en python
Trouvons un graphique de la distribution de Poisson et de la distribution cumulative de Poisson en Python et Java, respectivement.
Probablement dans un serpent Nishiki (Titre original: Peut-être en Python)
Ecrire une dichotomie en Python
[python] Gérer les fonctions dans une liste
Appuyez sur une commande en Python (Windows)
Créer un lecteur CSV avec Flask