Modèle de mélange gaussien

Machine LearningMachine LearningBeginner
Pratiquer maintenant

This tutorial is from open-source community. Access the source code

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

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.