Gráfico de distância de Knn para determinar o eps do DBSCAN

9

Eu gostaria de usar o gráfico de distância knn para descobrir qual valor eps devo escolher para o algoritmo DBSCAN. Com base nesta página:

A idéia é calcular a média das distâncias de cada ponto até seus k vizinhos mais próximos. O valor de k será especificado pelo usuário e corresponde a MinPts. Em seguida, essas distâncias k são plotadas em ordem crescente. O objetivo é determinar o "joelho", que corresponde ao parâmetro eps ideal.

Usando python com numpy / sklearn, tenho os seguintes pontos, com a seguinte distância para 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]]

então calculei a distância média:

distances.mean()
2.9269575028354495

O problema é que não entendo como exatamente eu poderia representar o mesmo gráfico que eles com distâncias no eixo y e número de pontos de acordo com as distâncias no eixo x usando python.

Obrigado pela sua ajuda.

Marc Lamberti
fonte
! [insira a descrição da imagem aqui ] ( i.stack.imgur.com/KFDbs.png ) Por que o gráfico de pontos vizinhos tem esse formato? Por favor me ajude!!!
Dung Le

Respostas:

8

Vocês

  1. pegue a última coluna dessa matriz
  2. ordenar descendente
  3. índice de plotagem, distância
  4. espero ver um joelho (se a distância não funcionar bem. pode não haver nenhum)
Possui QUIT - Anony-Mousse
fonte
Na mesma trama, eu faço isso para diferentes k? ou apenas um k para um gráfico, como no exemplo? e o que você quer dizer com "índice"
Marc Lamberti
Usar o 6NN quando você tem apenas 6 pontos é obviamente absurdo. Faça isso por um k apropriado. Índice como em "índice de matriz". porque você precisa 2D para traçar.
parou - anony-Mousse
E eu só uso a última coluna da matriz de distância. Uma vez que no exemplo falam de distâncias de amostragem ..
Marc Lamberti
Essa publicação está incorreta lá e em pelo menos outro local (você não precisa definir uma semente)
Foi QUIT - Anony-Mousse 09/09/16
11
Você só tem um k. Por que você não usa o papel DBSCAN. mas misturar vários sites de baixa qualidade?
parou - anony-Mousse