Induktives Clustering mit Scikit-Learn

Beginner

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

Einführung

In diesem Lab werden wir uns mit der induktiven Clustering beschäftigen, einem Verfahren, das das Clustering erweitert, indem aus den Clusterlabels ein Klassifizierer induziert wird. Wir werden die scikit-learn-Bibliothek in Python verwenden, um einen Meta-Schätzer zu implementieren, der das Clustering erweitert.

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.

Trainingdaten generieren

In diesem Schritt werden wir einige Trainingdaten aus Clustering generieren. Wir werden die Funktion make_blobs aus scikit-learn verwenden, um 5000 Proben mit 3 Clustern zu generieren, die unterschiedliche Standardabweichungen und Zentren haben.

X, y = make_blobs(
    n_samples=5000,
    cluster_std=[1.0, 1.0, 0.5],
    centers=[(-5, -5), (0, 0), (5, 5)],
    random_state=42,
)

Clustering-Algorithmus trainieren

In diesem Schritt werden wir einen Clustering-Algorithmus auf den generierten Trainingsdaten trainieren und die Clusterlabels erhalten. Wir werden AgglomerativeClustering aus scikit-learn verwenden, um den Algorithmus mit 3 Clustern zu trainieren.

clusterer = AgglomerativeClustering(n_clusters=3)
cluster_labels = clusterer.fit_predict(X)

Neue Proben generieren

In diesem Schritt werden wir neue Proben generieren und sie zusammen mit dem ursprünglichen Datensatz plotten. Wir werden die Funktion make_blobs erneut verwenden, um 10 neue Proben zu generieren.

X_new, y_new = make_blobs(
    n_samples=10, centers=[(-7, -1), (-2, 4), (3, 6)], random_state=42
)

Induktives Lernmodell deklarieren

In diesem Schritt werden wir das induktive Lernmodell deklarieren, das zur Vorhersage der Clusterzugehörigkeit für unbekannte Instanzen verwendet werden wird. Wir werden RandomForestClassifier aus scikit-learn als Klassifizierer verwenden.

classifier = RandomForestClassifier(random_state=42)
inductive_learner = InductiveClusterer(clusterer, classifier).fit(X)

Vorhersage der Clusterzugehörigkeit für unbekannte Instanzen

In diesem Schritt werden wir das induktive Lernmodell verwenden, um die Clusterzugehörigkeit für die generierten neuen Proben zu prognostizieren. Wir werden die predict-Funktion aus der InductiveClusterer-Klasse verwenden und die neuen Proben mit ihren wahrscheinlichen Clustern plotten.

probable_clusters = inductive_learner.predict(X_new)

plt.subplot(133)
plot_scatter(X, cluster_labels)
plot_scatter(X_new, probable_clusters)
plt.title("Classify unknown instances")

Zusammenfassung

In diesem Lab haben wir uns mit induktivem Clustering beschäftigt, einem Verfahren, das das Clustering erweitert, indem ein Klassifizierer aus den Clusterlabels induziert wird. Wir haben die scikit-learn-Bibliothek in Python verwendet, um einen Meta-Schätzer zu implementieren, der das Clustering erweitert, und einen Clustering-Algorithmus auf den generierten Trainingsdaten trainiert. Wir haben auch neue Proben generiert und das induktive Lernmodell verwendet, um die Clusterzugehörigkeit für die neuen Proben zu prognostizieren.