Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python | SKlearn | PCA_Python_Scikit Learn_Pca - Fatal编程技术网

Python | SKlearn | PCA

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,

编辑:谢谢你发现了打字错误,应该是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, 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特征)
。这里没有提到样本的数量。谢谢你的回复,这是一个打字错误,我已经编辑并更正了这个问题