2017-09-12 12 views
-1

編集:タイプミスを発見してくれてありがとう、それは60 * 50でなければならない、私は同じ問題を修正した。Python | SKlearn | PCA

私は以下の問題に固執しています。pcaコンポーネントの形状をチェックしたとき、60個の観測値と50個の変数を持つマトリックスでPCAを実行した後、50 * 50になります。私はそれが60 * 50でなければならないと思うのに対して。私はRでチェックしたのと同じように、私の理解によれば60 * 50になる。私が何か間違っていると私に知らせてください。 PFBコード:

import numpy as np 
arr=np.random.randn(20*3*50) 
from numpy import * 
arr = (arr - mean(arr, axis=0))/std(arr, axis=0) 
arr=arr.reshape(60,50) 
arr.shape 
#output: (60, 50) 

arr[1:20, 2] = 1 
arr[21:40, 1] = 2 
arr[21:40, 2] = 2 
arr[41:60, 1] = 1 
arr.shape 
#output: (60, 50) 

from sklearn.decomposition import PCA 
pca = PCA() 
X_train_pca = pca.fit_transform(arr) 
pca.components_.shape 
#output: (50, 50) 
+0

回答がありがたいです、それはタイプミスでした。私は質問を編集して修正しました。 –

答えて

3

Look scikit-learnのPCAクラス。 n_componentsが設定されていない場合、すべてのコンポーネントが保たれている

...:それはあることを教えてくれる限り形状(n_components, n_features)の戻り値Array pca.components_として

n_components == min(n_samples, n_features)

が、混乱はありません。

+0

'n_components'が宣言されていない場合、強制的に' n_features' countと等しいと言われています。あなたの 'n_features'数は50です。あなたの結果に50行あります。 – Grigoriy

+0

返信ありがとうございました –

+0

コンポーネントの数は50ですが、ここでの行の数は元のデータの60である必要がありますが、出力では行の数は50に減らされます。各主成分ごとに行数が60となる。 –

関連する問題