Introduction
Ce laboratoire vous guidera dans la mise en œuvre de modèles de mélange gaussien (GMM) à l'aide de la bibliothèque scikit-learn en Python. Les GMM sont des modèles probabilistes qui supposent que les données sont générées à partir d'un mélange de plusieurs distributions gaussiennes. Ils sont largement utilisés dans divers domaines tels que la vision par ordinateur, la finance et l'informatique bio pour les tâches de regroupement et d'estimation de densité.
Conseils sur la VM
Une fois le démarrage de la VM terminé, cliquez dans le coin supérieur gauche pour basculer vers l'onglet Notebook pour accéder à Jupyter Notebook pour la pratique.
Parfois, vous devrez peut-être attendre quelques secondes pour que Jupyter Notebook ait fini de charger. La validation des opérations ne peut pas être automatisée en raison des limitations de Jupyter Notebook.
Si vous rencontrez des problèmes pendant l'apprentissage, n'hésitez pas à demander à Labby. Donnez des commentaires après la session, et nous résoudrons rapidement le problème pour vous.
Importation des bibliothèques
Dans cette étape, nous allons importer les bibliothèques nécessaires pour ce laboratoire. Nous utiliserons NumPy pour les calculs numériques, Matplotlib pour la visualisation des données et scikit-learn pour la mise en œuvre des GMM.
import numpy as np
import matplotlib.pyplot as plt
from sklearn import mixture
Générer des données
Dans cette étape, nous allons générer un ensemble d'échantillons de données composé de deux distributions gaussiennes avec des moyennes et des covariances différentes.
n_samples = 500
np.random.seed(0)
C = np.array([[0.0, -0.1], [1.7, 0.4]])
X = np.r_[
np.dot(np.random.randn(n_samples, 2), C),
0.7 * np.random.randn(n_samples, 2) + np.array([-6, 3]),
]
Implémenter le modèle de mélange gaussien
Dans cette étape, nous allons implémenter le modèle de mélange gaussien à l'aide de la classe GaussianMixture de scikit-learn. Nous allons ajuster le modèle à notre ensemble de données et prédire les étiquettes de cluster pour chaque point de données. Enfin, nous allons tracer les résultats.
## Create a GMM object with 5 components
gmm = mixture.GaussianMixture(n_components=5, covariance_type="full")
## Fit the GMM to the data
gmm.fit(X)
## Predict the cluster labels
Y_ = gmm.predict(X)
## Plot the results
color_iter = ["navy", "c", "cornflowerblue", "gold", "darkorange"]
for i, color in enumerate(color_iter):
plt.scatter(
X[Y_ == i, 0], X[Y_ == i, 1], 0.8, color=color, label="Cluster {}".format(i)
)
plt.legend(loc="best")
plt.title("Gaussian Mixture Model")
plt.show()
Implémenter le modèle de mélange gaussien bayésien
Dans cette étape, nous allons implémenter le modèle de mélange gaussien bayésien à l'aide de la classe BayesianGaussianMixture de scikit-learn. Ce modèle a une loi a priori de processus de Dirichlet qui adapte automatiquement le nombre de clusters en fonction des données. Nous allons ajuster le modèle à notre ensemble de données et prédire les étiquettes de cluster pour chaque point de données. Enfin, nous allons tracer les résultats.
## Create a Bayesian GMM object with 5 components
dpgmm = mixture.BayesianGaussianMixture(n_components=5, covariance_type="full")
## Fit the Bayesian GMM to the data
dpgmm.fit(X)
## Predict the cluster labels
Y_ = dpgmm.predict(X)
## Plot the results
color_iter = ["navy", "c", "cornflowerblue", "gold", "darkorange"]
for i, color in enumerate(color_iter):
plt.scatter(
X[Y_ == i, 0], X[Y_ == i, 1], 0.8, color=color, label="Cluster {}".format(i)
)
plt.legend(loc="best")
plt.title("Bayesian Gaussian Mixture Model with a Dirichlet process prior")
plt.show()
Sommaire
Dans ce laboratoire, nous avons appris à implémenter des modèles de mélange gaussien à l'aide de la bibliothèque scikit-learn en Python. Nous avons également appris à générer un ensemble de données, à ajuster les modèles aux données et à tracer les résultats. Les MGM sont des outils puissants pour les tâches de regroupement et d'estimation de la densité et sont largement utilisés dans divers domaines.