如果我在特征向量上应用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组件的数量 集群?感谢。
答案 0 :(得分:1)
PCA会将您指定的维数从n(在您的问题中未知)减少到n_components = 2.标签不会更改,数据矩阵中的行不会被切换。您可以将生成的聚类直接映射到原始数据。
n_components的选择取决于与原始数据相比保留的方差。首先,k-means不稳健,因此您必须多次初始化并将结果与给定的n_components进行比较。其次,您可能希望根据您可以绘制的关联特征值选择变量n_components。 此外,PCA对缩放敏感,因此您应该在PCA之前考虑标准化。 因此,为了回答你的问题,n_components的选择应该来自对要保留的方差的想法,而不是你想要实现的簇的数量。
另一个想法:您可以使用聚类算法而不是使用K-Means,而不需要聚类的目标numbner作为输入,例如DBSCAN。