【发布时间】:2018-01-16 14:21:08
【问题描述】:
我在具有 200 个特征的数据帧上使用 sklearn 中包含的 PCA() 实现。此数据框是使用以下代码创建的:
df = data.pivot_table(index='customer', columns='purchase', values='amount', aggfunc=sum)
df = df.reset_index().rename_axis(None, axis=1)
df = df.fillna(value=0)
然后,我实现了PCA():
import pandas as pd
import numpy as np
from sklearn.decomposition import PCA
pca = PCA(n_components=1)
p = pca.fit(df)
sum(pca.explained_variance_ratio_)
最后,我得到了如下所示的结果:
0.99999940944358268
我错了,或者当组件的数量设置为 200 中的 1 时,这个结果通常是不合逻辑的?
更多问题
- 简而言之,我的数据实际上只倾向于一个特征吗?
- 可能是什么原因造成的?
- 在运行 PCA 之前对每个客户的特征值求和会影响这一点吗?
- 我应该如何重组我的数据来克服这个看似错误的问题?
【问题讨论】:
-
stackoverflow.com/questions/22984335/…。我认为这是参考您所拥有的东西的好地方,这将使您对 PCA 有一个很好的了解。
-
谢谢!绝对是一个内容丰富的问题——我学到了很多。我还注意到我没有首先规范化/缩放数据(一个好主意)或在拟合模型后进行转换(我假设,必须?)。
-
是的,您必须使用
preprocessing标准化数据,这是 scikit-learn 中许多机器学习估计器的要求。我讨厌复制和粘贴,希望你能找到你需要的东西。
标签: python python-3.x pandas scikit-learn pca