<p>惯性被用作在几次运行中选择最佳俱乐部化的标准。为了能够找到最好的一个,所有聚类都应该以某种方式排序。这是通过为它们中的每一个指定一个称为惯性的标量值来实现的,这样它们就可以很容易地相互比较。此值不打算以任何其他方式使用</p>
<p>下面是在矩阵密集的情况下计算其值的当前实现(源代码可用<a href="https://github.com/scikit-learn/scikit-learn/blob/master/sklearn/cluster/_k_means_fast.pyx#L102" rel="nofollow noreferrer">here</a>):</p>
<pre><code>cpdef floating _inertia_dense(
np.ndarray[floating, ndim=2, mode='c'] X, # IN
floating[::1] sample_weight, # IN
floating[:, ::1] centers, # IN
int[::1] labels): # IN
"""Compute inertia for dense input data
Sum of squared distance between each sample and its assigned center.
"""
cdef:
int n_samples = X.shape[0]
int n_features = X.shape[1]
int i, j
floating sq_dist = 0.0
floating inertia = 0.0
for i in range(n_samples):
j = labels[i]
sq_dist = _euclidean_dense_dense(&X[i, 0], &centers[j, 0],
n_features, True)
inertia += sq_dist * sample_weight[i]
return inertia
</code></pre>
<p>有一个循环,它贯穿所有集群并累加总和,因此它不提供一种方法来分别获取每个集群的惯性值。如果您需要每个集群的惯性,那么您必须自己实现它</p>