2017-02-27 154 views
0

如果我施加PCA上的特徵向量,然後我做聚類,例如像以下:PCA前K均值聚類

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) 
  1. 減小的數據將是在PCA分量而言,使後 在kmean中聚類,可以得到每個點的標籤 (reduced_data),如何知道源數據中哪一個?

  2. 如何玩關於 集羣數量的PCA組件數量?謝謝。

回答

0
  1. PCA減少了尺寸的,你從n個指定n_components = 2的標籤不改號(在你的問題不詳),在數據矩陣的行不會切換。您可以將生成的羣集直接映射到原始數據上。

  2. n_components的選擇取決於與原始數據相比保留的方差。首先,k-means並不健壯,因此您必須多次初始化並將結果與​​給定的n_components進行比較。其次,你會想根據你可以繪製的相關特徵值選擇變量n_components。此外,PCA對縮放比較敏感,因此在PCA之前應考慮歸一化。 因此,要回答你的問題,n_components的選擇應該是關於保留方差的想法,而不是你想要實現的羣集數量。

另一種思考:除了使用K-手段,你可以使用聚類算法不需要集羣的目標numbner作爲輸入,如DBSCAN