sklearn pca的n_component等于特征数问题

时间:2019-11-02 10:56:51

标签: python scikit-learn pca

当我未设置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]]

1 个答案:

答案 0 :(得分:3)

sklearn pca page 中的文档说

ipairs()

这就是为什么您的结果包含3个成分的原因。

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

要获得有关PCA的更多数学解释,请检查其他来源,例如PCA wikipedia