我正在使用scikit-learn运行k-means。我看了scikit-learn k-means代码,但我不明白k-means如何预先计算距离。 k-means预先预先计算了哪些距离,而k-means则预先不知道中心的值?
答案 0 :(得分:0)
它不预先计算中心之间的距离,而是预先计算一个点(例如X)与系统中所有其他点之间的距离,并将其存储以备后用。
选中此line 619 in kmeans会调用_labels_inertia_precompute_dense
,后者又会调用pairwise_distances_argmin_min at line 562。
pairwise_distances_argmin_min的文档中指出
计算一个点与一组点之间的最小距离。 此函数为X中的每一行计算Y的行的索引 最接近(根据指定距离)。最小的 距离也将返回。
所以它不需要知道中心,这只是用来预先计算所有可能的点对之间的距离。