Расстояние KNN для определения EPS DBSCAN
-
16-10-2019 - |
Вопрос
Я хотел бы использовать график расстояния 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.
Спасибо за помощь.
Решение
Ты
- Возьмите последний столбец этой матрицы
- сортировать нисходящее
- Индекс сюжета, расстояние
- Надеюсь увидеть колено (если расстояние не работает хорошо. Их не может быть)