在进行 K 意味着通过 Scikit-Learn 进行聚类时,要获得失真函数(每个点到其中心的距离之和),一种简单的方法是获取中心 ( k_means.cluster_centers_
) 并总结每个点的距离。
只是想知道是否有更快的方法?(就程序员时间而言)类似于直接函数调用之类的东西。
在进行 K 意味着通过 Scikit-Learn 进行聚类时,要获得失真函数(每个点到其中心的距离之和),一种简单的方法是获取中心 ( k_means.cluster_centers_
) 并总结每个点的距离。
只是想知道是否有更快的方法?(就程序员时间而言)类似于直接函数调用之类的东西。
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
根据失真度量的定义,它可以是
每个示例到其最近的聚类中心的距离的平方和。
或者
到各个簇的质心的欧几里得平方距离的平均值。
对于后一种情况,您可以访问 在 kmeans 的情况下,能否从惯性导出失真而不是从头开始重新计算?
KMeans中的惯性属性在官方文档中定义为
样本到它们最近的聚类中心的距离平方和,如果提供,则按样本权重加权。