Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/356.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 为什么PCA';什么改变了?_Python_Machine Learning_Scikit Learn_Pca - Fatal编程技术网

Python 为什么PCA';什么改变了?

Python 为什么PCA';什么改变了?,python,machine-learning,scikit-learn,pca,Python,Machine Learning,Scikit Learn,Pca,我在数据集上做PCA。为了找到PCA的最佳数目,我使用特征的数目作为PCA的数目。然而,当我查看解释的方差比时,我注意到主成分分析的数量发生了变化。最初,数据集是200*300,所以在使用#of components=300进行PCA后,我应该得到300个PCA及其相应的方差比,但我得到了200 代码如下: # Standardize the data scaler = StandardScaler() X_train_scaled = scaler.fit_transform(X_train)

我在数据集上做PCA。为了找到PCA的最佳数目,我使用特征的数目作为PCA的数目。然而,当我查看解释的方差比时,我注意到主成分分析的数量发生了变化。最初,数据集是200*300,所以在使用#of components=300进行PCA后,我应该得到300个PCA及其相应的方差比,但我得到了200

代码如下:

# Standardize the data
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)

# Find the optimal number of PCA 
#pca.explained_variance_ratio_
pca = PCA()
pca.fit(X_train_scaled)
ratios = pca.explained_variance_ratio_
我刚刚弄明白了原因,所以我将在下面回答这个问题。

这实际上是:

n_组件:保留的组件的int、None或string数量

如果未设置n_组件,则保留所有组件:n_组件==min(n_样本,n_特征)

因此,当数据集的样本数少于其特征数时,PCA会自动选择样本数作为组件数。

这实际上是:

n_组件:保留的组件的int、None或string数量

如果未设置n_组件,则保留所有组件:n_组件==min(n_样本,n_特征)

因此,当数据集的样本数少于其特征数时,PCA会自动选择样本数作为组件数