WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Clusterverfahren

 

Andi_1

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.07.2010, 14:59     Titel: Clusterverfahren
  Antworten mit Zitat      
Hallo Leute,

habe hier eine Punktwolke die ich clustern will. Im Endeffekt möchte ich Punkthäufungen erkennen und in Gruppen zusammenfassen. Welche Verfahren gibt es hierzu in Matlab? Oft braucht man ja für die Verfahren einen Startwert für die Anzahl der Cluster. Gibt es hier eines, dass ohne einen solchen Startwert angewendet werden kann?
Gruß

Andi


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 06.07.2010, 15:09     Titel:
  Antworten mit Zitat      
Hallo,

in der Statistics Toolbox gibt es
Hierarchische Cluster (Befehle: cluster / clusterdata)
k-Means Cluster (Befehle: kmeans)

Bei beiden muss die Anzahl der Cluster vorgegeben werden. Man kann bei den hierarchischen Clustern versuchen, die Anzahl der Cluster aus dem Output von linkage (siehe Beispiel zu cluster in der Doku) abzuleiten.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
andi1

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.07.2010, 15:11     Titel:
  Antworten mit Zitat      
Hallo,

habe jetzt einmal etwas mit k-means und clusterdate rumgespielt. Bekomme die Daten so auch gerastert. MIt dem Ergebnis bin ich noch nicht ganz zufrieden. Ich weiss vorher leider nicht wieviele Cluster meine Punktwolke enthalten soll und kann es deshlab auch nicht angeben.

@harald: wie meinst du kann ich aus dem output von linkage automatisch eine clusteranzahl bestimmen? Das output zeigt mir ja in den ersten beiden Spalten die beiden Punkte und in der dritten dazugehörigen Spalte ihren Abstand an.

Gibt es dann bei clusterdata ein paar parameter mit denen ich spielen könnte um die Anzahl der entstehenden cluster zu optimieren? Über ein anschauliches Beispiel würde ich mich sehr freuen.

Viele Grüße
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 13.07.2010, 21:28     Titel:
  Antworten mit Zitat      
Hallo,

meine Erfahrung damit hält sich auch in Grenzen. Man sagt jedoch üblicherweise, dass die Clusterbildung dann beendet werden soll, wenn sich die Distanz (3. Wert von linkage) stark ändert.
Vorschlag also: die Position von max(diff(3. Spalte)) suchen und damit weiterarbeiten.
Zu den Parametern kann ich dir auch nicht mehr sagen, als in der Dokumentation steht.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
andi1

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.07.2010, 10:36     Titel:
  Antworten mit Zitat      
Hallo,

wenn ich:

Y = pdist(X,'euclid');
Z = linkage(Y,'single');

auf meine Punktmatrix anwende, ist die grösste Distanz in der dritten Spalte in Z 6,75 Meter. Du meinst wenn jetzt dort ein "grosser" Sprung zwischen zwei Zeilen ist, soll ich abbrechen und diesen Wert weiterverwenden? Hab ich das richtig verstanden? Wie verwende ich diesen Wert weiter. Ich würde diesen Wert ja dann als Maximale Distanz für das Clustern verwenden?! Aber wie? Könntest du vielleicht ein Beispiel machen?

Vielen Dank und Gruß
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 15.07.2010, 19:10     Titel:
  Antworten mit Zitat      
Hallo,

basierend auf dem Beispiel in
Code:
könnte man das so machen:
Code:
X = [3 1.7; 1 1; 2 3; 2 2.5; 1.2 1; 1.1 1.5; 3 1];
Y = pdist(X);
Z = linkage(Y);
[wert, index] = max(diff(Z(:,3)));
numclust = size(Z,1)-index+1


schau dir auch mal
Code:
dendrogram(Z)
an. Da sieht man schön, wo man abschneiden kann.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
andi_1
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 86
Anmeldedatum: 15.07.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.07.2010, 14:25     Titel:
  Antworten mit Zitat      
Hallo zusammen,

mit dieser Methode bekomme ich gut 1/3 der gewünschten Klusteranzahl. Vielleicht multipliziere ich den Wert "numclust" mit 3. Werde das mal in anderen Testfeldern ausprobieren.

Momentan habe ich bei der Clusterung noch Probleme: Mit dem blosen Auge erkenne ich die Cluster in meiner Punktwolke ganz gut. Nun habe ich hier Zum Beispiel eine mit dem blosen Auge erkennbare Anhäufung von Punkten, die eigentlich ein Cluster sein sollen. Der Clusteralgrythmus ordnet nun dieser Anhäufung 3 Cluster zu, wild durcheinander. Kann ich diese nicht räumlich trennen, dass ich sage: hier ist mein Cluster und alle Punkte die Beispielsweise in einem gewissen Radius um den Mittelpunkt dieses Clusters liegen, werden dann auch genau diesem Cluster zugeordnet? So dass es keine Vermischungen mehr gibt.

Setze ich um so etwas zu vermeiden die Clusteranzahl herunter, werden an anderer Stelle zwei vorher richtig erkannte cluster zu einem zusammengeschmissen...

Wie könnte ich dem Herr werden?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 16.07.2010, 14:34     Titel:
  Antworten mit Zitat      
Hallo,

das Multiplizieren mit 3 halte ich generell für keine gute Lösung, wenn es nicht irgendwie fundiert ist.

Die Vorgehensweise beim Zusammenfassen von Clustern ist in dem Befehl soweit festgelegt. Bei Punktwolken könnte ich mir vorstellen, dass du mit kmeans-Clusters bessere Ergebnisse bekommst.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
andi_1
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 86
Anmeldedatum: 15.07.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.07.2010, 10:11     Titel:
  Antworten mit Zitat      
Hallo Harald,

bei k-means hab ich halt wieder das Problem der festen Anzahl an Clustern.
"Die Vorgehensweise beim Zusammenfassen von Clustern ist in dem Befehl soweit festgelegt" Meinst du damit, dass ich nichts dagegen tun, kann dass Punkte unterschiedlich zugewiesener Cluster, wie ein wilder Haufen vermischt sind...
Gruß
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.