我正在使用scikit-learn来运行k-means。我查看了scikit-learnk-means代码,但我不明白k-means如何提前预先计算距离。哪些距离 k 均值预先预先计算,而它事先不知道中心的值?
它不会预先计算中心之间的距离,而是预先计算一个点(例如 X(与系统中所有其他点之间的距离,并存储它们以供以后使用。
检查 kmeans 中的第 619 行,它调用_labels_inertia_precompute_dense
,而 pairwise_distances_argmin_min 又调用第 562 行。
pairwise_distances_argmin_min的文件指出:
计算一个点和一组点之间的最小距离。 此函数计算 X 中每一行的索引,即 Y 行的索引 哪个是最近的(根据指定的距离(。最小 还会返回距离。
因此,它不需要知道中心,这只是用于预先计算所有可能的点对之间的距离。