PCA如何为scmeit学习中的Kmeans算法提供中心

giz*_*gok 2 k-means pca scikit-learn

我正在查看Scikit Kmeans数字示例中给出的示例代码

此脚本中有以下代码:

# 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)
Run Code Online (Sandbox Code Playgroud)

为什么特征向量用作初始中心并且对此有任何直觉?

Kyl*_*ner 5

有一个stackexchange链接在这里,并且也对一些讨论PCA维基百科.

还有一个 关于此示例创建的信息性邮件列表讨论.

所有这些线程重新指向此文件中的其他人.简而言之,本文认为SVD(如PCA中所见)的子空间与我们在K-means中寻找的最佳聚类中心之间存在着强烈的关系,以及相关的证明.关键句子出现在第一页的右下角 - "我们证明主成分实际上是K-means聚类方法中聚类成员指标的连续解,即PCA维数减少自动执行数据聚类. K均值目标函数".

这相当于SVD/PCA特征向量应该是K-Means的非常好的初始化器.本文的作者实际上更进一步,将数据投射到本征空间进行实验,然后在那里进行聚类.