python - Sklearn 的 PCA 给出最后一行的“错误”输出
问题描述
我试图通过 sklearn 运行数据PCA (n_components=2)
,发现最后一行的 y 值与相同输入值的其他值不同。值得注意的是,输入数据仅包含两个不同的条目,并且当更改条目的出现次数时,错误就会消失。
请在下面找到代码以复制错误。
import pandas as pd
from sklearn.decomposition import PCA
lst1 = [[-0.485886999,0,-0.485886999,-0.485886999,-0.485886999,0,-0.485886999,-0.485886999,-0.485886999,-0.485886999,-0.485886999,0.485886999,-0.485886999,-0.485886999,-0.485886999,-0.485886999]]*7798
lst2 = [[2.0580917,0,2.0580917,2.0580917,2.0580917,0,2.0580917,2.0580917,2.0580917,2.0580917,2.0580917,-2.0580917,2.0580917,2.0580917,2.0580917,2.0580917]]*1841
df_lst1 = pd.DataFrame(lst1)
df_lst2 = pd.DataFrame(lst2)
test = pd.concat([df_lst2, df_lst1], axis=0).reset_index(drop=True)
pca = PCA(n_components=2)
pca.fit(test)
result = pd.DataFrame(pca.transform(test), index=test.index)
print(result)
最后三行的输入(三行相同):
0 1 2 3 4 5 6 ... 9 10 11 12 13 14 15
9636 -0.485887 0 -0.485887 -0.485887 -0.485887 0 -0.485887 ... -0.485887 -0.485887 0.485887 -0.485887 -0.485887 -0.485887 -0.485887
9637 -0.485887 0 -0.485887 -0.485887 -0.485887 0 -0.485887 ... -0.485887 -0.485887 0.485887 -0.485887 -0.485887 -0.485887 -0.485887
9638 -0.485887 0 -0.485887 -0.485887 -0.485887 0 -0.485887 ... -0.485887 -0.485887 0.485887 -0.485887 -0.485887 -0.485887 -0.485887
最后三行的输出:
0 1
9636 -1.818023 1.679370e-17
9637 -1.818023 1.679370e-17
9638 -1.818023 0.000000e+00
解决方案
推荐阅读
- java - 添加方法和 while 循环无法正确执行
- c# - 我怎样才能有一个随机数而没有相同的
- c# - 在同步等待方法中,图像属性不与 UI 绑定
- c# - 如何写入现有的txt文件c#
- javascript - 在自定义框架中使用由 babeljs.io 和 webpack 生成的 javascript ES6 代码
- python - 如何使用 Python joblib 填充全局变量?
- android - Android Studio 3.1 从 Emulator 读取 SQL 表
- typescript - 带有 React Native 的 TypeScript:创建自定义组件
- ios - Swift 4 中的 UIButton 数组
- sql-server - 多个 on 语句如何在单个内部联接中工作?