2

在进行 K 意味着通过 Scikit-Learn 进行聚类时,要获得失真函数(每个点到其中心的距离之和),一种简单的方法是获取中心 ( k_means.cluster_centers_) 并总结每个点的距离。

只是想知道是否有更快的方法?(就程序员时间而言)类似于直接函数调用之类的东西。

4

2 回答 2

7

fit这已经在该类的inertia_属性中预先计算过了KMeans

>>> from sklearn.datasets import load_iris
>>> from sklearn.cluster import KMeans
>>> iris = load_iris()
>>> km = KMeans(3).fit(iris.data)
>>> km.inertia_
78.940841426146108
于 2012-07-18T08:19:08.117 回答
0

根据失真度量的定义,它可以是

每个示例到其最近的聚类中心的距离的平方和

或者

到各个簇的质心的欧几里得平方距离的平均值。

对于后一种情况,您可以访问 在 kmeans 的情况下,能否从惯性导出失真而不是从头开始重新计算?

KMeans中的惯性属性在官方文档中定义为

样本到它们最近的聚类中心的距离平方和,如果提供,则按样本权重加权。

于 2021-11-07T21:53:06.347 回答