python - 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]]
解决方案
sklearn pca 页面中的文档说
n_components == min(n_samples, n_features)
这就是为什么你的结果有 3 个组件的原因。
然后 PCA 将通过将您的数据转换为方差最大化(和正交)的 3 个主轴来完成它的工作。
要获得有关 PCA 功能的更多数学解释,请查看其他来源,例如PCA 维基百科
推荐阅读
- reactjs - 如何使用具有 2 个不同组件的路由器?
- cypress - 我们如何从 `.cirlceci/config.yml` 文件中调用 package.json 中给出的 `cy:test-flight`
- xml - 将标题标题创建为 CSV
- javascript - DataTables“表中无可用数据”文本位置更改
- java - Android Studio 代码样式设置不起作用
- java - 使用 picasso android 库加载图像表单 URL 时出现 HTTP 504 错误
- node.js - 如何解决对预检请求未通过访问控制检查错误的问题响应?
- javascript - 如何在我的 JSON 响应 API 中添加总计(int)字段
- javascript - 在 background.js 中获取标签的元素
- java - addcallback ListenableFuture