Wie wird eine Instanz mit Wekas ​​DBSCAN gebündelt?

9

Ich habe versucht, den DBSCAN-Clusterer von Weka für Cluster-Instanzen zu verwenden. Von dem, was ich verstehe, sollte ich die clusterInstance() -Methode dafür verwenden, aber zu meiner Überraschung sieht es bei der Betrachtung des Codes dieser Methode so aus, als ob die Implementierung den Parameter ignoriert:

%Vor%

Das scheint nicht richtig zu sein. Wie soll das funktionieren? Gibt es eine andere Methode, die ich für das Clustering verwenden sollte? Muss ich diese Methode sequentiell in allen Instanzen in einer bestimmten Reihenfolge ausführen, wenn ich daraus nützliche Informationen herausholen möchte?

    
Oak 17.09.2011, 07:10
quelle

3 Antworten

0

Wie Mark geantwortet hat, ist das offensichtlich ein Fehler. Solange Sie Instanzen genau in der Reihenfolge abfragen, in der sie in den Clusterer eingefügt wurden, ist es in Ordnung; aber es wird in keinem anderen Fall funktionieren.

Eine Mitarbeiterin löste dies, indem sie ihre eigene Version der DBScan-Klasse schrieb: im Wesentlichen identisch (copy-pasted), nur dass sie eine Zuordnung zwischen Instanzen und Cluster-Labels pflegt. Diese Zuordnung kann durch Iteration über den Inhalt der database -Instanz hergestellt werden. Der entsprechende Cluster für eine Instanz kann dann sofort von diesem Mapping abgerufen werden.

Das Bearbeiten dieser Methode ist auch eine gute Gelegenheit, throw new Exception in etwas Sinnvolleres zu ändern, wie zum Beispiel return -1 .

    
Oak 16.11.2011, 18:39
quelle
5

Dies wurde als Fehler gemeldet - [Wekalist] DBScan - Problem / Fehler mit "clusterInstance ()" - Funktion .

  

Ich mache etwas Clustering mit der DBScan-Bibliothek. Leider   scheint, dass es einen Fehler in der Funktion "clusterInstance ()" gibt. Das   Funktion gibt nur die Nummer des zugewiesenen Clusters nicht zurück   Gibt die Cluster-Nummer des ersten Datenbankelements (oder des   zweitens beim zweiten Anruf, drittens beim dritten Anruf usw.)   und NICHT die zugewiesene Instanz.

     

Es kann einfach nicht funktionieren, weil die zugewiesene Variable nie in verwendet wird   die Funktion.

Die Antwort lautet:

  

DBScan und Optics sind Beiträge zu Weka. Es ist wahrscheinlich das Beste, wenn du es tust   kontaktieren Sie die Autoren, um zu sehen, ob sie eine Fehlerbehebung vorschlagen können. Der Code und   Paketinfo (Weka 3.7) hat Kontaktinformationen:

     

Ссылка

Ich fürchte, ich bin mit dem DBScan-Algorithmus nicht vertraut und der Code ist jetzt ziemlich alt (2004), Sie könnten Glück haben und feststellen, dass Sie die Autoren der LMU München noch kontaktieren können.

Ich habe zahlreiche Kopien davon über Google-Codesuche und GitHub , aber ich konnte kein Beispiel finden, wo es repariert worden war. Während der Suche habe ich mehrere andere Implementierungen von DBScan bemerkt, die Sie untersuchen konnten, um herauszufinden, wie diese behoben werden könnten (zB ELKIs DBSCAN )

Wie gesagt, ich bin mit DBScan nicht vertraut, aber wenn ich mir die JavaDocs anschaue, habe ich den Eindruck, dass das tatsächliche Clustering durch Aufruf von buildClusterer (Instanzen Instanzen) aufgerufen wird. In der buildClusterer -Methode scheint es viel mehr um den Quellcode zu gehen als bei der clusterInstance -Methode. OPTICS.java enthält auch eine clusterInstance-Methode, die nur eine Ausnahme auslöst. Wenn Sie Glück haben, können Sie ohne eine funktionierende clusterInstance -Methode auskommen.

Ich habe ein Beispiel dafür gefunden, dass Wekas ​​DBScan hier verwendet wird: DBSCANClustering.java

    
Mark McLaren 21.09.2011 22:22
quelle
0

Das Beispiel von Mark zeigt gut, wie die DBScan-Klasse verwendet wird.

Die Methode, die das tatsächliche Clustering durchführt, ist DBScan.buildClusterer(Instances instances) .

Das DBScan.clusterInstance(Instance instance) soll die Nummer des zugewiesenen Clusters für eine bestimmte Instanz zurückgeben (nachdem Sie die Methode buildClusterer ausgeführt haben). Aber es stimmt, dass der Parameter tatsächlich ignoriert wird, also denke ich, dass er nicht das tut, was er tun soll.

    
Dario Seidl 22.09.2011 00:00
quelle

Tags und Links