Какие расстояния k-means предварительно вычисляет, когда precompute_distances имеет значение True? - PullRequest
0 голосов
/ 27 июня 2018

Я использую scikit-learn для запуска k-means. Я посмотрел код k-средних в scikit-learn, но не понимаю, как k-means заранее вычисляет расстояния. На каких расстояниях k-means заранее вычисляет заранее, пока не знает заранее значения центров?

1 Ответ

0 голосов
/ 27 июня 2018

Он не вычисляет заранее расстояние между центрами, он предварительно вычисляет расстояние между точкой, скажем, X, и всеми другими точками в системе и сохраняет их для дальнейшего использования.

Проверьте эту строку 619 в kmeans , которая вызывает _labels_inertia_precompute_dense, что, в свою очередь, вызывает pairwise_distances_argmin_min в строке 562 .

Документация pairwise_distances_argmin_min гласит, что

Вычислить минимальные расстояния между одной точкой и набором точек. Эта функция вычисляет для каждой строки в X индекс строки Y который находится ближе всего (согласно указанному расстоянию). Минимальный расстояния также возвращаются.

Так что ему не нужно знать центры, это просто используется для предварительного вычисления расстояний между всеми возможными парами точек друг с другом.

...