Пытаюсь найти оптимальную eps
для своей модели DBSCAN
. Для этого я прочитал несколько статей, в которых упоминается, что его можно визуально найти в KNN distance plot
. Я хочу добавить информацию о моих данных, моя форма данных (334,6), и я помещаю ее в DataFrame
. Все они являются двоичными значениями 0/1. Я масштабировал данные с помощью StandardScaler
, затем подгоняю к нему KNN
, получаю расстояния и строю их. Конечный результат сюжета - он по форме напоминает плотницкий квадрат. Затем я смотрю расстояния, это показывает, что 98% значений расстояний равны 0. Почему это так? Я думал, что масштабирование устранит 0, и поскольку все значения не равны 0, расстояния не будут равны 0? Я делаю это неправильно? или это правда, но в моем сюжете нет локтя?
#NOTE df shapes 334,6 and all of them are binary 0/1
scp = StandardScaler()
df = scpx.fit_transform(df)
neigh = NearestNeighbors(n_neighbors=6)
nbrs = neigh.fit(df)
distances, indices = nbrs.kneighbors(df)
distances = np.sort(distances, axis=0)
distances = distances[:,1]
plt.plot(distances)