Knn-Entfernungsdiagramm zur Bestimmung des eps von DBSCAN


9

Ich möchte das Knn-Entfernungsdiagramm verwenden, um herauszufinden, welchen EPS-Wert ich für den DBSCAN-Algorithmus wählen soll. Basierend auf dieser Seite:

Die Idee ist, den Durchschnitt der Entfernungen jedes Punktes zu seinen k nächsten Nachbarn zu berechnen. Der Wert von k wird vom Benutzer angegeben und entspricht MinPts. Als nächstes werden diese k-Abstände in aufsteigender Reihenfolge aufgetragen. Ziel ist es, das „Knie“ zu bestimmen, das dem optimalen eps-Parameter entspricht.

Wenn ich Python mit numpy / sklearn verwende, habe ich die folgenden Punkte mit dem folgenden Abstand für 6-knn:

X = np.array([[-1, -1], [-2, -1], [-3, -2], [1, 1], [2, 1], [3, 2]])
nbrs = NearestNeighbors(n_neighbors=len(X)).fit(X)
distances, indices = nbrs.kneighbors(X)

# Indices

[[0 1 2 3 4 5]
 [1 0 2 3 4 5]
 [2 1 0 3 4 5]
 [3 4 5 0 1 2]
 [4 3 5 0 1 2]
 [5 4 3 0 1 2]]

# Distances
[[ 0.          1.          2.23606798  2.82842712  3.60555128  5.        ]
[ 0.          1.          1.41421356  3.60555128  4.47213595  5.83095189]
[ 0.          1.41421356  2.23606798  5.          5.83095189  7.21110255]
[ 0.          1.          2.23606798  2.82842712  3.60555128  5.        ]
[ 0.          1.          1.41421356  3.60555128  4.47213595  5.83095189]
[ 0.          1.41421356  2.23606798  5.          5.83095189  7.21110255]]

dann habe ich die durchschnittliche Entfernung berechnet:

distances.mean()
2.9269575028354495

Das Problem ist, dass ich nicht verstehe, wie genau ich das gleiche Diagramm mit Abständen auf der y-Achse und der Anzahl der Punkte entsprechend den Abständen auf der x-Achse mit Python darstellen kann.

Danke für deine Hilfe.


! [Bildbeschreibung hier eingeben ] ( i.stack.imgur.com/KFDbs.png ) Warum hat mein benachbartes Punktdiagramm diese Form? Bitte hilf mir!!!
Dung Le

Antworten:


8

Du

  1. Nimm die letzte Spalte dieser Matrix
  2. absteigend sortieren
  3. Plotindex, Entfernung
  4. Ich hoffe, ein Knie zu sehen (wenn der Abstand nicht gut funktioniert. Möglicherweise gibt es keinen).

Auf dem gleichen Grundstück mache ich das für verschiedene k? oder nur ein k für ein Diagramm wie im Beispiel? und was meinst du mit "index"
Marc Lamberti

Die Verwendung des 6NN, wenn Sie nur 6 Punkte haben, ist natürlich Unsinn. Tun Sie es für ein geeignetes k. Index wie im "Array-Index". weil du 2d zum Plotten brauchst.
Hat aufgehört - Anony-Mousse

Und ich benutze nur die letzte Spalte der Distanzmatrix. Denn im Beispiel geht es um die Mittelung von Entfernungen.
Marc Lamberti

Dieser Beitrag ist dort und an mindestens einer anderen Stelle falsch (Sie müssen keinen Samen setzen)
Hat aufgehört - Anony-Mousse

1
Sie haben nur ein k. Warum verwenden Sie nicht das DBSCAN-Papier? aber verschiedene minderwertige Websites mischen?
Hat aufgehört - Anony-Mousse
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.