Gauß'sches Mischmodell

Machine LearningMachine LearningBeginner
Jetzt üben

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

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab führen wir Sie durch die Implementierung von Gaussian Mixture Models (GMMs) mithilfe der scikit-learn-Bibliothek in Python. GMMs sind probabilistische Modelle, die davon ausgehen, dass die Daten aus einer Mischung mehrerer Gaußverteilungen generiert werden. Sie werden in verschiedenen Bereichen wie Computer Vision, Finanzwesen und Bioinformatik für Clustering- und Dichte-Schätzungstasks weit verbreitet eingesetzt.

VM-Tipps

Nachdem der VM-Start abgeschlossen ist, klicken Sie in der oberen linken Ecke, um zur Registerkarte Notebook zu wechseln und Jupyter Notebook für die Übung zu nutzen.

Manchmal müssen Sie einige Sekunden warten, bis Jupyter Notebook vollständig geladen ist. Die Validierung von Vorgängen kann aufgrund von Einschränkungen in Jupyter Notebook nicht automatisiert werden.

Wenn Sie bei der Lernphase Probleme haben, können Sie Labby gerne fragen. Geben Sie nach der Sitzung Feedback, und wir werden das Problem für Sie prompt beheben.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL ml(("Machine Learning")) -.-> ml/FrameworkandSoftwareGroup(["Framework and Software"]) ml/FrameworkandSoftwareGroup -.-> ml/sklearn("scikit-learn") subgraph Lab Skills ml/sklearn -.-> lab-49139{{"Gauß'sches Mischmodell"}} end

Bibliotheken importieren

In diesem Schritt importieren wir die erforderlichen Bibliotheken für dieses Lab. Wir werden NumPy für numerische Berechnungen, Matplotlib für die Datenvisualisierung und scikit-learn für die GMM-Implementierung verwenden.

import numpy as np
import matplotlib.pyplot as plt
from sklearn import mixture

Daten generieren

In diesem Schritt werden wir einen Beispiel-Datensatz generieren, der aus zwei Gaußverteilungen mit unterschiedlichen Mittelwerten und Kovarianzen besteht.

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]),
]

Gauß'sches Mischmodell implementieren

In diesem Schritt implementieren wir das Gauß'sche Mischmodell mithilfe der GaussianMixture-Klasse von scikit-learn. Wir werden das Modell an unseren Datensatz anpassen und die Clusterbezeichnungen für jedes Datenpunkt vorherhersagen. Schließlich werden wir die Ergebnisse darstellen.

## 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("Gauß'sches Mischmodell")
plt.show()

Bayesisches Gauß'sches Mischmodell implementieren

In diesem Schritt implementieren wir das Bayes'sche Gauß'sche Mischmodell mithilfe der BayesianGaussianMixture-Klasse von scikit-learn. Dieses Modell hat einen Dirichlet-Prozess-Prior, der automatisch die Anzahl der Cluster basierend auf den Daten anpasst. Wir werden das Modell an unseren Datensatz anpassen und die Clusterbezeichnungen für jedes Datenpunkt vorherhersagen. Schließlich werden wir die Ergebnisse darstellen.

## 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("Bayesisches Gauß'sches Mischmodell mit Dirichlet-Prozess-Prior")
plt.show()

Zusammenfassung

In diesem Lab haben wir gelernt, wie man Gauß'sche Mischmodelle mit der scikit-learn-Bibliothek in Python implementiert. Wir haben auch gelernt, wie man einen Datensatz generiert, die Modelle an die Daten anpasst und die Ergebnisse darstellt. Gauß'sche Mischmodelle sind leistungsstarke Werkzeuge für Clustering- und Dichteschätzungstasks und werden in verschiedenen Bereichen weit verbreitet eingesetzt.