Scikit learn PCA如何为scikit学习中的Kmeans算法提供中心

Scikit learn PCA如何为scikit学习中的Kmeans算法提供中心,scikit-learn,k-means,pca,Scikit Learn,K Means,Pca,我正在查看上给出的示例代码 此脚本中有以下代码: # in this case the seeding of the centers is deterministic, hence we run the # kmeans algorithm only once with n_init=1 pca = PCA(n_components=n_digits).fit(data) bench_k_means(KMeans(init=pca.components_, n_clusters=n_digits

我正在查看上给出的示例代码

此脚本中有以下代码:

# in this case the seeding of the centers is deterministic, hence we run the
# kmeans algorithm only once with n_init=1
pca = PCA(n_components=n_digits).fit(data)
bench_k_means(KMeans(init=pca.components_, n_clusters=n_digits, n_init=1),
          name="PCA-based",
          data=data)

为什么本征向量被用作初始中心?对此有什么直觉吗?

有一个stackexchange链接,也有一些关于初始中心的讨论

还有一个关于创建此示例的示例

所有这些线程都指向中间。简言之,本文认为,SVD发现的子空间(如PCA所示)与我们在K-均值中寻找的最佳聚类中心之间存在着很强的关系,并给出了相关证明。关键的句子出现在第一页的右下角——“我们证明校长 组件实际上是K-means聚类方法中聚类成员指标的连续解,即PCA降维根据K-means目标函数自动进行数据聚类”


这意味着SVD/PCA特征向量应该是非常好的K-均值初始化器。这篇论文的作者实际上更进一步,将数据投影到特征空间中用于他们的两个实验,然后聚集在那里。

也请尝试感谢Kyle的解释。我不知道邮件列表存档,这是一个很好的指针。我认为这表明k-means实际上并没有发现数据中的结构(即集群)。这更像是一种投影技术(像PCA),尽管它更灵活。正交性约束很快导致无法解释的向量。