2017-01-22 4 views
-1

Ich bin neu in Matlab und ich möchte wissen, wie ausführen k-Means-Algorithmus in MATLAB, und auch ich will wissen, wie Clusterzentren zu definieren, wenn k Mittel durchgeführt wird.Wie man K-Means-Algorithmus in MATLAB durchführt?

Zum Beispiel lassen Sie uns sagen, dass ich ein Array bin erstellen, wie unten angegeben.

m = [11.00; 10.60; 11.00; 12.00; 11.75; 11.55; 11.20; 12.10; 11.60; 11.40;... 
    11.10; 11.60; 11.00; 10.15; 9.55; 9.35; 8.55; 7.65; 7.80; 8.45; 8.05] 

Ich möchte die obigen Werte in 5 Gruppen clustern, wo k = 5.

Und ich möchte die Clusterzentren als 2 nehmen, 5, 10, 20, 40.

Also meine Frage ist, wie kann ich die Cluster-Zentren definieren und k-Means-Algorithmus in MATLAB durchführen? Gibt es einen bestimmten Parameter, um die Cluster-Zentren in MATLAB kmeans() Funktion zu setzen?

Bitte helfen Sie mir die oben genannten Probleme zu lösen.

+1

Check diese https://in.mathworks.com/help/stats/kmeans.html –

Antwort

1

Das Ziel von k-means Clustering ist die k Clusterzentren zu finden, die Gesamtdistanz aller Punkte von ihren jeweiligen Clusterzentren zu minimieren.

Mit diesem Ziel würden Sie

schreiben
[clusterIndex, clusterCenters] = kmeans(m,5,'start',[2;5;10;20;40]) 

Dies würde die Clusterzentren von ihrer Startposition, bis eine optimale Position und Zuordnung gefunden worden waren anzupassen.

Wenn Sie stattdessen Ihre Punkte in m zu festen Clusterzentren verknüpfen möchten, würden Sie nicht kmeans verwenden, aber die clusterIndex direkt min

distanceToCenter = bsxfun(@minus,m,[2 5 10 20 40]); 
[~, clusterIndex] = min(abs(distanceToCenter),[],2); 

dh mit berechnen. Sie berechnen die Differenz zwischen jedem Punkt und jedem Zentrum und finden für jeden Punkt das Zentrum mit dem minimalen (absoluten) Abstand.


Ergebnisse zeichnen, können Sie die Punkte auf einer Linie ausrichten und färben sie das Zentrum nach:

nCenters = length(clusterCenters); 
cmap = hsv(nCenters); 
figure 
hold on 
for iCenter = 1:nCenters 
    plot(m(iCenter==clusterIndex),1,'.','color',cmap(iCenter,:)); 
    plot(clusterCenters(iCenter),1,'*','color',cmap(iCenter,:)); 
end 
+0

Danke für die Antwort. Es wäre sehr hilfreich, wenn Sie mir mitteilen könnten, wie Sie die Ergebnisse darstellen. – TSac

+0

@TSac wenn diese Antwort half man bedenkt, [akzeptieren es] (http://stackoverflow.com/help/someone-answers) – EBH

+0

Jede Idee, wie in 2D das obige Diagramm zeichnen? Beispielsweise repräsentiert die x-Achse die Zeit und die y-Achse die Frequenz. Es wäre wirklich dankbar, wenn Sie antworten können. – TSac

Verwandte Themen