2017-08-07 5 views
-3

I haben die folgenden Eingangs ganzzahligen Vektoren (Beispiel):Java - k-means clustering

4 138 233 461 610 621 669 742 814 827 
89 138 334 656 697 810 
138 
138 196 738 
659 738 
4 461 
138 337 756 810 
8 138 196 337 468 663 664 756 809 810 

Sie alle ganzzahligen Werte enthalten [1-850] und sind alle in einer CSV-Datei gespeichert.

Ich möchte sie in mehrere Cluster basierend auf Ähnlichkeiten in den Vektoren teilen, aber ich bin verwirrt darüber, wie genau ein k-Means-Algorithmus für meine Eingabedaten in Java zu implementieren. Wer ist bereit, mit Tipps oder Code zu helfen?

Vielen Dank im Voraus.

+0

wir können Ihnen helfen, wenn Sie tatsächlich Code. aber wir werden den Code für Sie nicht wite. –

+0

Haben Sie eine spezifische Frage? Das Aushelfen ist zu weit für SO. – Cedias

+0

Ehm, mit einer Suchmaschine ist nicht möglich? – AKSW

Antwort

0

Pseudo-Code für k-Mittel-Cluster

vorausgesetzt, Sie haben eine Metrik (lassen Sie sich diesen M nennen), die Eingabeobjekte vergleichen (in Ihrem Fall Vektoren) und gibt ein Maß der Ähnlichkeit.

und eine Funktion (sie diesen A nennt), die für die Berechnung der Mittelwert einer Sammlung von Eingang der Lage ist, Objekte

  1. zufällig N Artikel aus Ihrem Daten-Set auswählen. Sie sind die neuen Zentren der Cluster (sogenannte Centroids).
  2. für jedes Element X, das kein Schwerpunkt ist, berechnen Sie seinen Abstand zu jedem Schwerpunkt (mit M), und markieren Sie es als zu dem Schwerpunkt C, wo der Abstand zwischen X und C (mit M) ist am kleinsten.
  3. Jeder Artikel ist jetzt einem Schwerpunkt zugeordnet.
  4. die Mittelungsfunktion (A) Mit dem neuen Zentroide
  5. Verwenden Sie entweder die Ausgabe von A direkt als neuen Schwerpunkte, oder finden tatsächliche Elemente, die am nächsten an den Ausgang von A (mit M)
  6. Wiederholung berechnen die Schritte 2 bis 5, bis Konvergenz (oder bis die Rechen Budget ausgegeben wurde)

Sie können auch https://en.wikipedia.org/wiki/K-means_clustering