【问题标题】:PCA before K-mean clusteringK-mean 聚类之前的 PCA
【发布时间】:2017-07-17 22:39:21
【问题描述】:
如果我在特征向量上应用 PCA,然后进行聚类,如下所示:
reduced_data = PCA(n_components=2).fit_transform(data)
kmeans = KMeans(init='k-means++', n_clusters=n_digits, n_init=10)
kmeans.fit(reduced_data)
减少的数据将是 PCA 组件方面的数据,因此在
在kmean中聚类,你可以得到每个点的标签
(reduced_data),如何从原始数据中知道是哪一个?
如何玩一些关于 PCA 组件的数量
集群?谢谢。
【问题讨论】:
标签:
python
cluster-computing
cluster-analysis
k-means
pca
【解决方案1】:
PCA 将您指定的维度数从 n(您的问题中未知)减少到 n_components = 2。标签不会更改,数据矩阵中的行不会切换。您可以将生成的集群直接映射到原始数据上。
n_components 的选择取决于与原始数据相比保留的方差。首先,k-means 不稳健,因此您必须多次初始化并将结果与给定的 n_components 进行比较。其次,您需要根据可以绘制的相关特征值来选择变量 n_components。
此外,PCA 对缩放很敏感,因此您应该在 PCA 之前考虑归一化。
因此,要回答您的问题,n_components 的选择应该源于对要保留的方差的想法,而不是您想要实现的集群数量。
另一个想法:您可以使用不需要目标簇数作为输入的聚类算法,而不是使用 K-Means,例如 DBSCAN。