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

    class sklearn.cluster.KMeans(n_clusters=8, init=’k-means++’, n_init=10,
    max_iter=300, tol=0.0001, precompute_distances=’auto’, verbose=0,
    random_state=None, copy_x=True, n_jobs=1, algorithm=’auto’)


它会预先计算出哪些距离?

最佳答案

对于每个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中心将发生变化。

关于scikit-learn - sklearn kmeans方法中的precompute_distances有什么作用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50003976/

10-12 23:33