precompute_distances在sklearn kmeans方法中做了什么?

时间:2018-04-24 14:16:27

标签: scikit-learn cluster-analysis k-means

我正在寻找precompute_distances属性的实用程序:

float: none;

它预先计算了哪些距离?

1 个答案:

答案 0 :(得分:1)

对于每个kmeans迭代,我们需要找到每个样本最近的簇来执行标记。如果pre_compute == True,则通过metrics.pairwise_distances_argmin_min()完成。如果pre_compute == False,则通过cluster._k_means._assign_labels_array()

完成

https://github.com/scikit-learn/scikit-learn/blob/a24c8b464d094d2c468a16ea9f8bf8d42d949f84/sklearn/cluster/k_means_.py#L618

第一种方法使用矩阵运算,而后者一次计算一对成对距离。这就是为什么precompute = True会更快但会占用更多内存的原因。

这些最小距离不能在迭代之间缓存,因为kmeans中心将会发生变化。