SciPy scipy.stats.multivariate_normal
L’objet Python Scipy scipy.stats.multivariate_normal est utilisé pour analyser la distribution normale multivariée et calculer différents paramètres liés à la distribution à l’aide des différentes méthodes disponibles.
Syntaxe pour générer la fonction de densité de probabilité à l’aide de l’objet scipy.stats.multivariate_normal
scipy.stats.multivariate_normal.pdf(x, mean=None, cov=1, allow_singular=False)
Paramètres:
x |
Valeurs dont pdf est à déterminer. La deuxième dimension de cette variable représente les composants de l’ensemble de données. |
mean |
Élément de type tableau qui représente la moyenne de la distribution. Chaque valeur du tableau représente la valeur de chaque composant du jeu de données. La valeur par défaut est 0. |
cov |
Matrice de covariance des données. La valeur par défaut est 1. |
allow_singular |
S’il est défini sur True, le singulier cov peut être autorisé. La valeur par défaut est False |
Retourner:
Une structure de type tableau qui contient la valeur de probabilité pour chaque élément de x.
Exemple : Générer une fonction de densité de probabilité à l’aide de la méthode scipy.stats.multivariate_normal.pdf
import numpy as np
from scipy.stats import multivariate_normal
mean = np.array([0.4, 0.8])
cov = np.array([[0.1, 0.3], [0.3, 1.0]])
x = np.random.uniform(size=(5, 2))
y = multivariate_normal.pdf(x, mean=mean, cov=cov)
print("Tha data and corresponding pdfs are:")
print("Data-------PDF value")
for i in range(len(x)):
print(x[i], end=" ")
print("------->", end=" ")
print(y[i], end="\n")
Production :
Tha data and corresponding pdfs are:
Data-------PDF value
[0.60156002 0.53917659] -------> 0.030687330659191728
[0.60307471 0.25205368] -------> 0.0016016741361277501
[0.27254519 0.06817383] -------> 0.7968146411119688
[0.33630808 0.21039553] -------> 0.7048988855032084
[0.0009666 0.52414497] -------> 0.010307396714783708
Dans l’exemple ci-dessus, x représente le tableau de valeurs dont pdf est à trouver. Les lignes représentent chaque valeur de x dont le pdf est à trouver, et les colonnes représentent le nombre de composantes utilisées pour représenter chaque valeur.
Ici, chaque valeur de x est constituée de deux composantes, et donc c’est un vecteur de longueur 2. La moyenne sera un vecteur de longueur égale au nombre de composantes. De même, si d est le nombre de composants dans le jeu de données, cov sera une matrice carrée symétrique de taille d*d.
La méthode scipy.stats.multivariate_normal.pdf prend l’entrée x, moyenne et la matrice de covariance cov et génère un vecteur d’une longueur égale au nombre de lignes dans x où chaque valeur dans la sortie le vecteur représente la valeur pdf pour chaque ligne dans x.
Exemple : Tirer des échantillons aléatoires d’une distribution normale multivariée à l’aide de la méthode scipy.stats.multivariate_normal.rvs
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import multivariate_normal
mean = np.array([0.4, 0.8])
cov = np.array([[0.1, 0.3], [0.3, 1.0]])
x = multivariate_normal.rvs(mean, cov, 100)
plt.scatter(x[:, 0], x[:, 1])
plt.show()
Production :

Le graphique ci-dessus représente le nuage de points de 20 échantillons aléatoires tirés au hasard d’une distribution normale multivariée à deux caractéristiques. La distribution a une valeur mean de [0.4,0.8] où 0.4 représente la valeur moyenne de la première caractéristique et 0.8 la moyenne de la deuxième caractéristique. Enfin, nous dessinons le diagramme de dispersion des échantillons aléatoires avec la première caractéristique le long de l’axe des X et la deuxième caractéristique le long de l’axe des Y.
D’après le graphique, il est clair que la plupart des points d’échantillonnage sont centrés autour de [0.4,0.8], représentant la moyenne de la distribution multivariée.
Exemple : obtenir une fonction de distribution cumulative à l’aide de la méthode scipy.stats.multivariate_normal.cdf
Fonction de distribution cumulative (CDF) est l’intégrale de pdf. CDF nous montre que toute valeur tirée de la population aura une valeur de probabilité inférieure ou égale à une certaine valeur. Nous pouvons calculer cdf des points de distribution multivariée en utilisant la méthode scipy.stats.multivariate_normal.cdf.
import numpy as np
from scipy.stats import multivariate_normal
mean = np.array([0.4, 0.8])
cov = np.array([[0.1, 0.3], [0.3, 1.0]])
x = np.random.uniform(size=(5, 2))
y = multivariate_normal.cdf(x, mean=mean, cov=cov)
print("Tha data and corresponding cdfs are:")
print("Data-------CDF value")
for i in range(len(x)):
print(x[i], end=" ")
print("------->", end=" ")
print(y[i], end="\n")
Production :
Tha data and corresponding cdfs are:
Data-------CDF value
[0.89027577 0.06036432] -------> 0.22976054289355996
[0.78164237 0.09611703] -------> 0.24075282906929418
[0.53051197 0.63041372] -------> 0.4309184323329717
[0.15571201 0.97173575] -------> 0.21985053519541042
[0.72988545 0.22477096] -------> 0.28256819625802715
Dans l’exemple ci-dessus, x représente le tableau de points où se trouve cdf. Les lignes représentent chaque valeur de x à laquelle cdf doit être trouvée, et les colonnes représentent le nombre de composants utilisés pour représenter chaque valeur.
Ici, chaque valeur de x est constituée de deux composantes, et donc c’est un vecteur de longueur 2. La moyenne sera un vecteur de longueur égale au nombre de composantes. De même, si d est le nombre de composants dans le jeu de données, cov sera une matrice carrée symétrique de taille d*d.
La méthode scipy.stats.multivariate_normal.cdf prend l’entrée x, mean et la matrice de covariance cov et génère un vecteur d’une longueur égale au nombre de lignes dans x où chaque valeur dans la sortie le vecteur représente la valeur cdf pour chaque ligne dans x.
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn