将precompute_distances设置为True时,k均值将预计算哪些距离?

时间:2018-06-27 09:19:31

标签: scikit-learn k-means computational-geometry euclidean-distance

我正在使用scikit-learn运行k-means。我看了scikit-learn k-means代码,但我不明白k-means如何预先计算距离。 k-means预先预先计算了哪些距离,而k-means则预先不知道中心的值?

1 个答案:

答案 0 :(得分:0)

它不预先计算中心之间的距离,而是预先计算一个点(例如X)与系统中所有其他点之间的距离,并将其存储以备后用。

选中此line 619 in kmeans会调用_labels_inertia_precompute_dense,后者又会调用pairwise_distances_argmin_min at line 562

pairwise_distances_argmin_min的文档中指出

  

计算一个点与一组点之间的最小距离。   此函数为X中的每一行计算Y的行的索引   最接近(根据指定距离)。最小的   距离也将返回。

所以它不需要知道中心,这只是用来预先计算所有可能的点对之间的距离。