编辑:感谢您发现错字,它应该是60*50,我在问题中纠正了相同的问题。
我在以下问题上陷入了以下问题,在我检查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)
查看Scikit-Learn中的PCA类。它告诉我们:
...如果未设置n_components,所有组件都保留:
n_components == min(n_samples, n_features)
就pca.components_
返回形状 (n_components, n_features)
的数组,没有混乱。