【问题标题】:sklearn pca's n_component equals to the number of features problemsklearn pca n_components 等于特征数问题
【发布时间】:2019-11-02 10:56:51
【问题描述】:

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

【问题讨论】:

  • 因为 sklearn 应该提供不同的输出......这就是它的目的?......

标签: python scikit-learn pca


【解决方案1】:

sklearn pca page says 中的文档

n_components == min(n_samples, n_features)

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

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

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

【讨论】:

    猜你喜欢
    • 2018-12-05
    • 2016-05-07
    • 2016-08-06
    • 1970-01-01
    • 2015-11-01
    • 2017-04-09
    • 2018-07-31
    • 2022-06-27
    • 1970-01-01
    相关资源
    最近更新 更多