Вопрос

Я хотел бы использовать график расстояния KNN, чтобы выяснить, какое значение EPS я должен выбрать для алгоритма DBSCAN. На основе это страница:

Идея состоит в том, чтобы рассчитать, среднее расстояние каждой точки до его ближайших соседей. Значение k будет указано пользователем и соответствует MINPT. Затем эти K-дистанции построены в восходящем порядке. Цель состоит в том, чтобы определить «колено», что соответствует оптимальному параметру EPS.

Используя Python с Numpy/Sklearn, у меня есть следующие точки, со следующим расстоянием для 6-nnn:

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]]

Затем я вычислил среднее расстояние:

distances.mean()
2.9269575028354495

Проблема в том, что я не понимаю, как именно я могу представлять тот же сюжет, что и они с расстояниями по оси Y и количеству точек в соответствии с расстояниями на оси X с использованием Python.

Спасибо за помощь.

Это было полезно?

Решение

Ты

  1. Возьмите последний столбец этой матрицы
  2. сортировать нисходящее
  3. Индекс сюжета, расстояние
  4. Надеюсь увидеть колено (если расстояние не работает хорошо. Их не может быть)
Лицензировано под: CC-BY-SA с атрибуция
Не связан с datascience.stackexchange
scroll top