K-Means Clustering

K-Means Clustering
K-Means-Clustering ist ein unbeaufsichtigter Algorithmus für maschinelles Lernen. Wenn wir die K-Means nicht überprüften Clustering-Algorithmus mit dem überwachten Algorithmus vergleichen, ist es nicht erforderlich, das Modell mit den beschrifteten Daten zu trainieren. Der K-Means-Algorithmus wird verwendet, um verschiedene Objekte basierend auf ihren Attributen oder Merkmalen in eine k-Anzahl von Gruppen zu klassifizieren oder zu gruppieren. Hier ist K eine Ganzzahlnummer. Die K-Mittelwerte berechnet den Abstand (unter Verwendung der Entfernungsformel) und findet dann den Mindestabstand zwischen den Datenpunkten und dem Centroid-Cluster, um die Daten zu klassifizieren.

Verstehen wir die K-mittler.

Objektname Attribute_x Attribute_y
M1 1 1
M2 2 1
M3 4 3
M4 5 4

K-means zur Lösung numerischer Beispiel:

Um das obige numerische Problem durch K-Means zu lösen, müssen wir die folgenden Schritte ausführen:

Der K-Means-Algorithmus ist sehr einfach. Zuerst müssen wir eine zufällige Anzahl von K auswählen und dann die Schwerpunkte oder das Zentrum der Cluster auswählen. Um die Schwerpunkte auszuwählen, können wir eine zufällige Anzahl von Objekten für die Initialisierung auswählen (abhängig vom Wert von K).

Die grundlegenden Schritte des K-Means-Algorithmus sind wie folgt:

  1. Läuft weiter, bis sich keine Objekte von ihren Zentroiden bewegen (stabil).
  2. Wir wählen zuerst einige Zentroide zufällig aus.
  3. Dann bestimmen wir den Abstand zwischen jedem Objekt und den Zentroiden.
  4. Gruppierung der Objekte basierend auf der Mindestentfernung.

Jedes Objekt hat also zwei Punkte als x und y, und sie repräsentieren im Graphenraum wie folgt:

Wir wählen also zunächst den Wert von k = 2 als zufällig, um unser oben genannter Problem zu lösen.

Schritt 1: Zunächst wählen wir die ersten beiden Objekte (1, 1) und (2, 1) als unsere Zentroids. Die folgende Grafik zeigt dasselbe. Wir nennen diese Zentroids C1 (1, 1) und C2 (2,1). Hier können wir sagen, C1 ist Group_1 und C2 ist Group_2.

Schritt 2: Jetzt werden wir jeden Objektdaten mithilfe der euklidischen Distanzformel auf Zentroids dienen.

Um den Abstand zu berechnen, verwenden wir die folgende Formel.

Wir berechnen den Abstand von Objekten zu Schwerpunkten, wie im folgenden Bild gezeigt.

Daher haben wir jeden Objektdatenpunkt -Distanz durch die obere Abstandsmethode berechnet und schließlich die Abstandsmatrix wie unten angegeben erhalten:

DM_0 =

0 1 3.61 5 C1 = (1,1)

Cluster1

Gruppe 1
1 0 2.83 4.24 C2 = (2,1)

Cluster2

Gruppe_2
A B C D
1 2 4 5 X
1 1 3 4 Y

Jetzt haben wir den Entfernungswert jedes Objekts für jeden Schwerpunkt berechnet. Zum Beispiel haben die Objektpunkte (1,1) einen Abstandswert zu C1 und C2 1 und 1 beträgt 1.

Aus der oberen Abstandsmatrix finden wir heraus, dass das Objekt (1, 1) einen Abstand zu Cluster1 (C1) hat 0 und zu Cluster2 (C2) 1 ist 1. Das Objekt ist also nahe an Cluster1 selbst.

In ähnlicher Weise beträgt der Abstand zu Cluster1 3, wenn wir das Objekt (4, 3) überprüfen, 3.61 und zu Cluster2 ist 2.83. Das Objekt (4, 3) verschiebt sich also zu Cluster2.

Wenn Sie nach dem Objekt (2, 1) prüfen, beträgt der Abstand zu Cluster1 1 und zu Cluster2 0. Dieses Objekt wechselt also zu Cluster2.

Nach ihrem Entfernungswert gruppieren wir nun die Punkte (Objektclustering).

G_0 =

A B C D
1 0 0 0 Gruppe 1
0 1 1 1 Gruppe_2

Nach ihrem Entfernungswert gruppieren wir nun die Punkte (Objektclustering).

Und schließlich sieht die Grafik nach dem Clustering (G_0) nach unten aus.

Iteration_1: Jetzt werden wir neue Zentroids berechnen. Der Group_1 hat also nur ein Objekt

Also neue C1 (1,1) und C2 (3 (3).66, 2.66)

Jetzt müssen wir wieder den Abstand zu neuen Zentroiden berechnen, wie wir zuvor berechnet haben.

DM_1 =

0 1 3.61 5 C1 = (1,1)

Cluster1

Gruppe 1
3.14 2.36 0.47 1.89 C2 = (3.66,2.66)

Cluster2

Gruppe_2
A B C D
1 2 4 5 X
1 1 3 4 Y

Iteration_1 (Objektclustering): Jetzt, im Namen der neuen Berechnung der Distanzmatrix (DM_1), gruppieren wir sie danach. Daher verschieben wir das M2 -Objekt von Group_2 auf Group_1 als Regel der Mindestabstand zu Zentroiden, und der Rest des Objekts ist derselbe. So wird ein neues Clustering wie unten sein.

G_1 =

A B C D
1 1 0 0 Gruppe 1
0 0 1 1 Gruppe_2

Jetzt müssen wir die neuen Schwerpunkte erneut berechnen, da beide Objekte zwei Werte haben.

Also werden neue Zentroids sein

Nachdem wir die neuen Schwerpunkte erhalten haben, sieht das Clustering nach unten aus:

C1 = (1.5, 1)

C2 = (4.5, 3.5)

Iteration_2: Wir wiederholen den Schritt, in dem wir den neuen Abstand jedes Objekts zu neuen berechneten Zentroiden berechnen. Nach der Berechnung erhalten wir also die folgende Entfernungsmatrix für iteration_2.

DM_2 =

0.5 0.5 3.20 4.61 C1 = (1.5, 1)

Cluster1

Gruppe 1
4.30 3.54 0.71 0.71 C2 = (4.5, 3.5)

Cluster2

Gruppe_2

A B C D

A B C D
1 2 4 5 X
1 1 3 4 Y

Auch hier machen wir die Clustering -Zuordnungen basierend auf der Mindestentfernung wie zuvor. Danach haben wir die Clustermatrix erhalten, die mit G_1 gleich ist.

G_2 =

A B C D
1 1 0 0 Gruppe 1
0 0 1 1 Gruppe_2

Wie hier, G_2 == g_1, Es ist also keine weitere Iteration erforderlich, und wir können hier aufhören.

K-Means-Implementierung mit Python:

Jetzt werden wir den K-Means-Algorithmus in Python implementieren. Um die K-Means zu implementieren, werden wir den berühmten Iris-Datensatz verwenden, der Open-Source ist. Dieser Datensatz hat drei verschiedene Klassen. Dieser Datensatz hat im Grunde vier Funktionen: Sepallänge, Sepalbreite, Blütenblattlänge und Blütenblattbreite. In der letzten Spalte wird der Name der Klasse dieser Zeile wie Setosa angezeigt.

Der Datensatz sieht aus wie unten:

Für die Implementierung von Python K-Means müssen wir die erforderlichen Bibliotheken importieren. Also importieren wir Pandas, Numpy, Matplotlib und auch Kmeans aus Sklearn.Kupplungsschupper wie unten angegeben:

Wir lesen die Iris.CSV -Datensatz mit der Methode des Read_CSV Panda und die Top 10 -Ergebnisse mit der Kopfmethode anzeigen.

Jetzt lesen wir nur die Funktionen des Datensatzes, die wir zum Training des Modells benötigen. Wir lesen also alle vier Funktionen der Datensätze (Sepallänge, Sepalbreite, Blütenblattlänge, Blütenblattbreite). Dafür haben wir die vier Indexwerte [0, 1, 2, 3] in die ILOC -Funktion des Datenrahmens des Pandas (DF) übergeben, wie unten gezeigt:

Jetzt wählen wir die Anzahl der Cluster zufällig (K = 5). Wir erstellen das Objekt der K-Means-Klasse und passen dann in unserem X-Datensatz für Training und Vorhersage ein, wie unten gezeigt:

Jetzt werden wir unser Modell mit dem zufälligen K = 5 -Wert visualisieren. Wir können deutlich fünf Cluster sehen, aber es sieht so aus, als wäre es nicht genau, wie unten gezeigt.

Unser nächster Schritt ist also, herauszufinden, dass die Anzahl der Cluster genau war oder nicht. Und dafür verwenden wir die Ellbogenmethode. Die Ellbogenmethode wird verwendet, um die optimale Anzahl des Clusters für einen bestimmten Datensatz herauszufinden. Diese Methode wird verwendet, um herauszufinden, ob der Wert von k = 5 korrekt war oder nicht, da wir kein klares Clustering erhalten. Danach gehen wir also in das folgende Diagramm, was zeigt, dass der Wert von k = 5 nicht korrekt ist, da der optimale Wert zwischen 3 oder 4 liegt.

Jetzt werden wir den obigen Code erneut mit der Anzahl der Cluster k = 4 ausführen, wie unten gezeigt:

Jetzt werden wir das obige K = 4 neue Build -Clustering visualisieren. Der folgende Bildschirm zeigt, dass jetzt das Clustering über die K-Mittel erfolgt.

Abschluss

Also haben wir den K-Means-Algorithmus sowohl im numerischen als auch im Python-Code untersucht. Wir haben auch gesehen, wie wir die Anzahl der Cluster für einen bestimmten Datensatz herausfinden können. Manchmal kann die Ellbogenmethode nicht die korrekte Anzahl von Clustern angeben. In diesem Fall gibt es also verschiedene Methoden, die wir wählen können.

Der Code für diesen Blog sowie der Datensatz finden Sie unter dem folgenden Link https: // github.com/shekharpandey89/k-means