首页 > 解决方案 > sklearn pca的n_component等于特征数问题

问题描述

当我不设置n_components参数时,保留的组件数等于数据框的特征数。

如果n_components未设置,则转换后的数据帧应该相同,但事实证明并非如此。

为什么转换后的数据帧与原始数据帧不同?

import pandas as pd
pca = PCA(random_state=seed)
pd1 = pd.DataFrame([[1,1,1],[2,2,2],[3,3,3]])
pca.fit(pd1)
print(pd1)
print(pca.transform(pd1))

输出是:

0  1  2
0  1  1  1
1  2  2  2
2  3  3  3
[[-1.73205081e+00 -1.11022302e-16  0.00000000e+00]
 [ 0.00000000e+00  0.00000000e+00  0.00000000e+00]
 [ 1.73205081e+00  1.11022302e-16  0.00000000e+00]]

标签: pythonscikit-learnpca

解决方案


sklearn pca 页面中的文档说

n_components == min(n_samples, n_features)

这就是为什么你的结果有 3 个组件的原因。

然后 PCA 将通过将您的数据转换为方差最大化(和正交)的 3 个主轴来完成它的工作。

要获得有关 PCA 功能的更多数学解释,请查看其他来源,例如PCA 维基百科


推荐阅读