Python | SKlearn | PCA

时间:2017-09-12 05:46:41

标签: python scikit-learn pca

编辑:感谢您发现拼写错误,它应该是60 * 50,我已在问题中更正了相同内容。

我坚持以下问题,在我检查了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)

1 个答案:

答案 0 :(得分:3)

在pikit-learn的PCA课上

Look。它告诉我们:

  

...如果未设置n_components,则保留所有组件:

     

n_components == min(n_samples, n_features)

只要pca.components_返回形状(n_components, n_features)的数组,就没有混淆。