Python | SKlearn | PCA
编辑:谢谢你发现了打字错误,应该是60*50,我已经在问题中纠正了同样的错误 在对一个包含60个观察值和50个变量的矩阵执行PCA后,我陷入了以下问题,当我检查PCA组件的形状时,结果是50*50。而我认为应该是60*50。和我在R里查的一样,根据我的理解,结果是60*50。如果我做错了什么,请告诉我。PFB代码:Python | SKlearn | PCA,python,scikit-learn,pca,Python,Scikit Learn,Pca,编辑:谢谢你发现了打字错误,应该是60*50,我已经在问题中纠正了同样的错误 在对一个包含60个观察值和50个变量的矩阵执行PCA后,我陷入了以下问题,当我检查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,
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的PCA课程中学习。它告诉我们:
…如果未设置n_组件,则保留所有组件:
n\u组件==min(n\u样本,n\u特征)
至于
pca.components
返回形状数组(n\u组件,n\u特征)
,没有混淆。它说如果未声明n\u组件
,它们将被迫等于n\u特征
计数。您的n\u功能
计数为50。结果中有50行。正确的组件数是50,但根据原始数据,此处的行数应为60,而在输出中,行数减少到50。当在R中执行相同操作时,每个主分量的行数为60。pca.components.shape
返回形状数组(n\u组件,n\u特征)
。这里没有提到样本的数量。谢谢你的回复,这是一个打字错误,我已经编辑并更正了这个问题