Detaillierte Erklärung des K-Means-Clustering-Modells in Python
Die Clusteranalyse ist eine Methode zur Erkennung ähnlicher Objekte in Daten. In Bereichen wie Data Mining und maschinellem Lernen wird die Clusteranalyse häufig eingesetzt. K-Means-Clustering ist eine der gebräuchlichsten Clustering-Methoden. Es kann die Stichproben im Datensatz in k Cluster unterteilen, wobei die internen Unterschiede jedes Clusters am kleinsten und die Unterschiede zwischen den Clustern am größten sind. In diesem Artikel wird das k-means-Clustering-Modell in Python ausführlich vorgestellt.
k-means-Clustering-Algorithmus ist eine iterative Clustering-Methode. Zu den Kernschritten gehören: Initialisieren des Massenschwerpunkts, Berechnen der Entfernung, Aktualisieren des Massenschwerpunkts, Bestimmen der Stoppbedingungen usw.
Zuerst müssen Sie die Anzahl der Cluster k angeben. Dann werden k Datenstichproben zufällig als anfängliche Schwerpunkte ausgewählt und für jede verbleibende Stichprobe wird sie dem Cluster mit dem nächstgelegenen Schwerpunkt zugewiesen. Als nächstes wird die Summe der quadrierten Abstände aller Datenpunkte in jedem Cluster vom Schwerpunkt des Clusters als Fehler des Clusters berechnet. Anschließend wird der Schwerpunkt jedes Clusters aktualisiert und in die Mitte aller Stichproben in diesem Cluster verschoben. Wiederholen Sie die obigen Schritte, bis der Fehler einen bestimmten Schwellenwert unterschreitet oder die Obergrenze der Anzahl der Iterationen erreicht ist.
In Python stellt die sklearn-Bibliothek die k-means-Clustering-Funktion bereit, die die einfachste Möglichkeit zur Verwendung des k-means-Clustering-Algorithmus darstellt. Im Folgenden wird der Iris-Datensatz als Beispiel verwendet, um zu zeigen, wie Python zum Implementieren von K-Means-Clustering verwendet wird Punkte repräsentieren jeweils unterschiedliche Cluster. Das schwarze „x“-Symbol stellt den Schwerpunkt jedes Clusters dar.
Wie man den optimalen k-Wert wähltCodebeispiel:
from sklearn.cluster import KMeans from sklearn.datasets import load_iris iris = load_iris() X = iris.data[:, :2] # 为了便于可视化,只取前两个特征 y = iris.target kmeans = KMeans(n_clusters=3) # 聚成3类 kmeans.fit(X) centroids = kmeans.cluster_centers_ # 质心 labels = kmeans.labels_ # 样本分类 # 绘制图形 import matplotlib.pyplot as plt colors = ['red', 'green', 'blue'] for i in range(len(X)): plt.scatter(X[i][0], X[i][1], c=colors[labels[i]]) for c in centroids: plt.scatter(c[0], c[1], marker='x', s=300, linewidths=3, color='black') plt.show()
Konturkoeffizientenmethode: Der Silhouettekoeffizient kombiniert die beiden Faktoren Intra-Cluster-Irrelevanz und Inter-Cluster-Ähnlichkeit. Je größer der Wert des Silhouette-Koeffizienten ist, desto besser ist der Clustering-Effekt. Der Berechnungsprozess der Silhouette-Koeffizienten-Methode ist wie folgt:
Berechnen Sie für jede Stichprobe ihren durchschnittlichen Abstand von allen Stichproben im selben Cluster (genannt a) und berechnen Sie ihren durchschnittlichen Abstand von allen Stichproben in den nächstgelegenen anderen Clustern (genannt b). ).
Berechnen Sie den Silhouette-Koeffizienten s jeder Probe, $s = rac {b-a} {max(a, b)}$. Der Silhouettenkoeffizient des gesamten Modells ist der Durchschnitt der Silhouettenkoeffizienten aller Stichproben.
Codebeispiel:
sse = [] for i in range(1, 11): kmeans = KMeans(n_clusters=i).fit(X) sse.append(kmeans.inertia_) # ineria_属性表示模型的误差平方和 plt.plot(range(1, 11), sse) plt.xlabel('K') plt.ylabel('SSE') plt.show()
Die Clustering-Ergebnisse hängen von der ausgewählten Distanzmetrik ab, wie z. B. der euklidischen Distanz, der Manhattan-Distanz usw. Die Wahl sollte entsprechend der tatsächlichen Situation getroffen werden.
Ausreißer im Datensatz werden leicht zu den falschen Clustern gelockt, und die Entfernung von Ausreißern sollte in Betracht gezogen werden.
Wenn die Stichprobenklassenverteilung unausgeglichen ist, besteht ein häufiges Problem darin, Cluster mit extrem verzerrten Eigenschaften zu erhalten.
ZusammenfassungDas obige ist der detaillierte Inhalt vonDetaillierte Erläuterung des K-Means-Clustering-Modells in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!