K-bedeutet Clustering mit Julia
mit Clustering.jl
Was ist K-Means-Clustering?
K-Means-Clustering ist eine unbeaufsichtigte Methode des maschinellen Lernens, die zur Klassifizierung von Datenpunkten verwendet wird. Ein Satz von N Datenpunkten wird in k Cluster unterteilt, wobei k die Anzahl der Cluster ist . Jeder Cluster konzentriert sich auf seinen Schwerpunkt ( Mittelwert ), und die Punkte/Beobachtungen im Cluster liegen nahe am Schwerpunkt ( Mittelwert ).
Was ist das Ziel?
Das Ziel des K-Means-Clustering besteht darin, einen Satz von N Datenpunkten in K Cluster zu unterteilen, wobei der Schwerpunkt auf der Reduzierung der Abstände zwischen der Summe der quadrierten Abstände zwischen jedem Datenpunkt und dem ihm zugewiesenen Clusterzentrum (Schwerpunkt) liegt.
Im Grunde werden dadurch Punkte ( mit ähnlichen Schwerpunkten ) gruppiert.
Beim K-Means-Clustering stellt der Abstand zwischen einem Datenpunkt und einem Clusterschwerpunkt die Ähnlichkeit zwischen dem Datenpunkt und dem Cluster dar.
Im weiteren Sinne wird K-Means-Clustering für verschiedene Zwecke verwendet, wie z. B. Bildsegmentierung, Marktsegmentierung, Anomalieerkennung, Gruppierung usw.
Wie funktioniert das?
Wenn Datenpunkte Clustern zugewiesen wurden, aktualisiert der k-Means-Algorithmus die Schwerpunkte, indem er den Mittelwert der jedem Cluster zugewiesenen Datenpunkte berechnet. Der aktualisierte Schwerpunkt wird zum neuen Mittelpunkt des Clusters, der den Durchschnitt aller Punkte in diesem Cluster darstellt.
Jeder Datenpunkt im Cluster wurde durch den Schwerpunkt zugewiesen, der dem Datenpunkt am nächsten liegt. Dazu werden die Abstände zwischen jedem Datenpunkt und allen Schwerpunkten berechnet und dann der Schwerpunkt mit dem minimalen Abstand ausgewählt.
Werfen wir einen Blick auf ein Beispiel und einige Plots ...
Unten ist mein Setup.
Ich füge einen zufälligen Startwert hinzu, der das Experiment reproduzierbar macht, und habe einige Daten erstellt, X und Y.
using Clustering, Random, Plots, DataFrames
Random.seed!(1)
X = rand(200);
Y = rand(200)
scatter(X,Y, legend=false , title = "Random Points")
Z = [X Y]'
k = 4
Dann füge ich die Iterationen hinzu, die die Anzahl der Iterationen begrenzen, die der Algorithmus ausführt.
iter = 50
Result = kmeans(Z, k; maxiter=iter, display=:iter)
Konvergenz nach 8 Iterationen!
Ich überprüfe, ob es 4 Cluster gibt:
nclusters(Result) == 4
Ich kann mir auch die Cluster-Aufgaben ansehen:
h = assignments(Result)
Ich kann die Clustergrößen erhalten:
c = counts(Result)
mu = Result.centers
Grundstücke
scatter(X,Y
,legend=false
,title = "Random Points with black centroids"
,xlabel = "X"
,ylabel = "Y"
,group = h
,markersize = 8
);
scatter!(mu[1,:],mu[2,:]
,color = :black
,markersize = 12
)
Abschluss
K-Means-Clustering ist ein nützlicher unbeaufsichtigter Algorithmus für maschinelles Lernen, der Datenpunkte abhängig von ihren Abständen zwischen Datenpunktschwerpunkten klassifiziert. Dadurch werden ähnliche Datenpunkte gruppiert.
Die verwendeten Distanzmaße könnten die Euklidische Distanz oder die Manhattan-Distanz sein , was von der Art der geclusterten Daten abhängt, und diese Wahl könnte auch einen erheblichen Einfluss auf die K-Means-Clustering-Ergebnisse haben.
Ich hoffe, Ihnen hat der Artikel gefallen und Sie fanden ihn hilfreich!
Vernetzen Sie sich auf Linkedin oder Github oder folgen Sie mir für weitere Artikel über Julia, R, Python und angewandte Statistiken!

![Was ist überhaupt eine verknüpfte Liste? [Teil 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































