Entfesseltes Clustering: K-Means-Clustering verstehen – KDnuggets

Entfesseltes Clustering: K-Means-Clustering verstehen – KDnuggets

Quellknoten: 2786780

Entfesseltes Clustering: K-Means-Clustering verstehen
Bild vom Autor
 

Bei der Analyse der Daten geht es uns darum, verborgene Muster zu finden und aussagekräftige Erkenntnisse zu gewinnen. Betreten wir die neue Kategorie des ML-basierten Lernens, d. h. das unbeaufsichtigte Lernen, bei dem einer der leistungsstarken Algorithmen zur Lösung der Clustering-Aufgaben der K-Means-Clustering-Algorithmus ist, der das Datenverständnis revolutioniert. 

K-Means hat sich zu einem nützlichen Algorithmus für maschinelles Lernen und Data-Mining-Anwendungen entwickelt. In diesem Artikel werden wir uns eingehend mit der Funktionsweise von K-Means, seiner Implementierung mit Python und der Erkundung seiner Prinzipien, Anwendungen usw. befassen. Beginnen wir also mit der Reise, um die geheimen Muster zu entschlüsseln und das Potenzial der K-Means auszuschöpfen Clustering-Algorithmus.

Der K-Means-Algorithmus wird verwendet, um die Clustering-Probleme zu lösen, die zur Klasse des unbeaufsichtigten Lernens gehören. Mit Hilfe dieses Algorithmus können wir die Anzahl der Beobachtungen in K Cluster gruppieren.

 

Entfesseltes Clustering: K-Means-Clustering verstehen
Abb.1 Funktionsweise des K-Means-Algorithmus | Bild von Auf dem Weg zu Data Science
 

Dieser Algorithmus verwendet intern die Vektorquantisierung, durch die wir jede Beobachtung im Datensatz dem Cluster mit dem minimalen Abstand zuordnen können, der den Prototyp des Clustering-Algorithmus darstellt. Dieser Clustering-Algorithmus wird häufig beim Data Mining und beim maschinellen Lernen zur Datenpartitionierung in K-Cluster basierend auf Ähnlichkeitsmetriken verwendet. Daher müssen wir in diesem Algorithmus den Summenquadratabstand zwischen den Beobachtungen und ihren entsprechenden Schwerpunkten minimieren, was letztendlich zu unterschiedlichen und homogenen Clustern führt.

Anwendungen von K-Means-Clustering

Hier sind einige der Standardanwendungen dieses Algorithmus. Der K-Means-Algorithmus ist eine in industriellen Anwendungsfällen häufig verwendete Technik zur Lösung von Clustering-bezogenen Problemen.

  1. Kundensegmentierung: K-Means-Clustering kann verschiedene Kunden basierend auf ihren Interessen segmentieren. Es kann auf Bankwesen, Telekommunikation, E-Commerce, Sport, Werbung, Vertrieb usw. angewendet werden.
  1. Dokumenten-Clustering: Bei dieser Technik werden wir ähnliche Dokumente aus einer Reihe von Dokumenten zusammenfassen, was zu ähnlichen Dokumenten in denselben Clustern führt.
  1. Empfehlungsmaschinen: Manchmal kann K-Means-Clustering zum Erstellen von Empfehlungssystemen verwendet werden. Sie möchten beispielsweise Ihren Freunden Lieder empfehlen. Sie können sich die Songs ansehen, die dieser Person gefallen, und dann mithilfe von Clustering ähnliche Songs finden und die ähnlichsten empfehlen.

Es gibt noch viele weitere Anwendungen, an die Sie sicher bereits gedacht haben und die Sie wahrscheinlich im Kommentarbereich unter diesem Artikel teilen.

In diesem Abschnitt beginnen wir mit der Implementierung des K-Means-Algorithmus für einen der Datensätze mithilfe von Python, der hauptsächlich in Data Science-Projekten verwendet wird.

1. Importieren Sie die erforderlichen Bibliotheken und Abhängigkeiten

Importieren wir zunächst die Python-Bibliotheken, die wir zur Implementierung des K-Means-Algorithmus verwenden, einschließlich NumPy, Pandas, Seaborn, Marplotlib usw.

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sb

2. Laden und analysieren Sie den Datensatz

In diesem Schritt laden wir den Schülerdatensatz, indem wir ihn im Pandas-Datenrahmen speichern. Um den Datensatz herunterzuladen, können Sie auf den Link verweisen hier.

Die vollständige Pipeline des Problems ist unten dargestellt:

 

Entfesseltes Clustering: K-Means-Clustering verstehen
Abb. 2 Projektpipeline | Bild vom Autor
 

df = pd.read_csv('student_clustering.csv')
print("The shape of data is",df.shape)
df.head()

3. Streudiagramm des Datensatzes

Der Schritt der Modellierung besteht nun darin, die Daten zu visualisieren. Daher verwenden wir matplotlib, um das Streudiagramm zu zeichnen, um zu überprüfen, wie der Clustering-Algorithmus funktioniert, und um verschiedene Cluster zu erstellen. 

# Scatter plot of the dataset
import matplotlib.pyplot as plt
plt.scatter(df['cgpa'],df['iq'])

 

Ausgang:

 

Entfesseltes Clustering: K-Means-Clustering verstehen
Abb.3 Streudiagramm | Bild vom Autor

4. Importieren Sie die K-Means aus der Cluster-Klasse von Scikit-learn

Da wir nun das K-Means-Clustering implementieren müssen, importieren wir zunächst die Cluster-Klasse und haben dann KMeans als Modul dieser Klasse. 

from sklearn.cluster import KMeans

5. Ermitteln des optimalen Werts von K mithilfe der Ellbogenmethode

In diesem Schritt ermitteln wir den optimalen Wert von K, einem der Hyperparameter, während wir den Algorithmus implementieren. Der K-Wert gibt an, wie viele Cluster wir für unseren Datensatz erstellen müssen. Es ist nicht möglich, diesen Wert intuitiv zu finden. Um den optimalen Wert zu finden, erstellen wir ein Diagramm zwischen WCSS (Quadratsumme innerhalb des Clusters) und verschiedenen K-Werten und müssen das K auswählen, das gibt uns den Mindestwert von WCSS.

# create an empty list for store residuals
wcss = [] for i in range(1,11): # create an object of K-Means class km = KMeans(n_clusters=i) # pass the dataframe to fit the algorithm km.fit_predict(df) # append inertia value to wcss list wcss.append(km.inertia_) 

 

Lassen Sie uns nun das Ellbogendiagramm zeichnen, um den optimalen Wert von K zu ermitteln.

# Plot of WCSS vs. K to check the optimal value of K
plt.plot(range(1,11),wcss)

 

Ausgang:

 

Entfesseltes Clustering: K-Means-Clustering verstehen
Abb.4 Ellenbogendiagramm | Bild vom Autor
 

Aus dem obigen Ellbogendiagramm können wir bei K=4 erkennen; Es gibt einen Abfall im Wert von WCSS. Wenn wir also den optimalen Wert 4 verwenden, erhalten Sie durch das Clustering eine gute Leistung. 

6. Passen Sie den K-Means-Algorithmus mit dem optimalen Wert von K an

Wir sind damit fertig, den optimalen Wert von K zu finden. Jetzt führen wir die Modellierung durch, bei der wir ein X-Array erstellen, das den vollständigen Datensatz mit allen Funktionen speichert. Es besteht hier keine Notwendigkeit, Ziel- und Merkmalsvektor zu trennen, da es sich um ein unbeaufsichtigtes Problem handelt. Danach erstellen wir ein Objekt der KMeans-Klasse mit einem ausgewählten K-Wert und passen diesen dann an den bereitgestellten Datensatz an. Schließlich drucken wir y_means aus, das die Mittelwerte der verschiedenen gebildeten Cluster angibt. 

X = df.iloc[:,:].values # complete data is used for model building
km = KMeans(n_clusters=4)
y_means = km.fit_predict(X)
y_means

7. Überprüfen Sie die Clusterzuordnung jeder Kategorie

Lassen Sie uns überprüfen, welche Punkte im Datensatz zu welchem ​​Cluster gehören. 

X[y_means == 3,1]

 

Bisher haben wir für die Schwerpunktinitialisierung die K-Means++-Strategie verwendet. Jetzt initialisieren wir die zufälligen Schwerpunkte anstelle von K-Means++ und vergleichen die Ergebnisse, indem wir dem gleichen Prozess folgen. 

km_new = KMeans(n_clusters=4, init='random')
y_means_new = km_new.fit_predict(X)
y_means_new

 

Überprüfen Sie, wie viele Werte übereinstimmen. 

sum(y_means == y_means_new)

8. Visualisierung der Cluster 

Um jeden Cluster zu visualisieren, zeichnen wir ihn auf den Achsen auf und weisen ihm verschiedene Farben zu, anhand derer wir die gebildeten 4 Cluster leicht erkennen können. 

plt.scatter(X[y_means == 0,0],X[y_means == 0,1],color='blue')
plt.scatter(X[y_means == 1,0],X[y_means == 1,1],color='red') plt.scatter(X[y_means == 2,0],X[y_means == 2,1],color='green') plt.scatter(X[y_means == 3,0],X[y_means == 3,1],color='yellow')

 

Ausgang:

 

Entfesseltes Clustering: K-Means-Clustering verstehen
Abb. 5 Visualisierung der gebildeten Cluster | Bild vom Autor

9. K-Means auf 3D-Daten

Da der vorherige Datensatz zwei Spalten hat, haben wir ein 2D-Problem. Jetzt werden wir die gleichen Schritte für ein 2D-Problem verwenden und versuchen, die Code-Reproduzierbarkeit für n-dimensionale Daten zu analysieren. 

# Create a synthetic dataset from sklearn
from sklearn.datasets import make_blobs # make synthetic dataset
centroids = [(-5,-5,5),(5,5,-5),(3.5,-2.5,4),(-2.5,2.5,-4)]
cluster_std = [1,1,1,1]
X,y = make_blobs(n_samples=200,cluster_std=cluster_std,centers=centroids,n_features=3,random_state=1)

 

# Scatter plot of the dataset
import plotly.express as px
fig = px.scatter_3d(x=X[:,0], y=X[:,1], z=X[:,2])
fig.show()

 

Ausgang:

 

Entfesseltes Clustering: K-Means-Clustering verstehen
Abb. 6 Streudiagramm eines 3D-Datensatzes | Bild vom Autor
 

wcss = []
for i in range(1,21): km = KMeans(n_clusters=i) km.fit_predict(X) wcss.append(km.inertia_) plt.plot(range(1,21),wcss)

 

Ausgang:

 

Entfesseltes Clustering: K-Means-Clustering verstehen
Abb.7 Ellenbogendiagramm | Bild vom Autor
 

# Fit the K-Means algorithm with the optimal value of K
km = KMeans(n_clusters=4)
y_pred = km.fit_predict(X)

 

# Analyse the different clusters formed
df = pd.DataFrame()
df['col1'] = X[:,0]
df['col2'] = X[:,1]
df['col3'] = X[:,2]
df['label'] = y_pred fig = px.scatter_3d(df,x='col1', y='col2', z='col3',color='label')
fig.show()

 

Ausgang:

 

Entfesseltes Clustering: K-Means-Clustering verstehen
Abb.8. Cluster-Visualisierung | Bild vom Autor
 

Den vollständigen Code finden Sie hier –  Colab-Notizbuch

Damit ist unsere Diskussion abgeschlossen. Wir haben die Funktionsweise, Implementierung und Anwendungen von K-Means besprochen. Zusammenfassend lässt sich sagen, dass es sich bei der Implementierung der Clustering-Aufgaben um einen weit verbreiteten Algorithmus aus der Klasse des unbeaufsichtigten Lernens handelt, der einen einfachen und intuitiven Ansatz zum Gruppieren der Beobachtungen eines Datensatzes bietet. Die Hauptstärke dieses Algorithmus besteht darin, die Beobachtungen mithilfe des Benutzers, der den Algorithmus implementiert, auf der Grundlage der ausgewählten Ähnlichkeitsmetriken in mehrere Sätze aufzuteilen. 

Basierend auf der Auswahl der Schwerpunkte im ersten Schritt verhält sich unser Algorithmus jedoch anders und konvergiert zu lokalen oder globalen Optima. Daher ist die Auswahl der Anzahl der Cluster zur Implementierung des Algorithmus, die Vorverarbeitung der Daten, der Umgang mit Ausreißern usw. von entscheidender Bedeutung, um gute Ergebnisse zu erzielen. Wenn wir jedoch die andere Seite dieses Algorithmus hinter den Einschränkungen betrachten, ist K-Means eine hilfreiche Technik für die explorative Datenanalyse und Mustererkennung in verschiedenen Bereichen.
 
 
Arischer Garg ist ein B.Tech. Student der Elektrotechnik, derzeit im letzten Jahr seines Studiums. Sein Interesse liegt im Bereich Webentwicklung und maschinelles Lernen. Er hat dieses Interesse verfolgt und ist bestrebt, mehr in diese Richtungen zu arbeiten.
 

Zeitstempel:

Mehr von KDnuggets