【发布时间】:2017-03-09 14:19:17
【问题描述】:
我想使用 sklearn 进行 pca 分析(然后是回归和 kmeans 聚类)。我有一个包含 20k 特征、2000k 行的数据集。然而,对于数据集中的每一行,只测量了特征子集(通常是 20k 中的任意 5 个左右)。
我应该如何填充我的 pandas 数据框/设置 sklearn,以便 sklearn 不使用未测量值的实例的功能? (例如,如果我将空特征值设置为 0.0,这会扭曲结果吗?)。
例如:
X = array[:,0:n]
Y = array[:,n]
pca = PCA()
fit = pca.fit(X)
如果数据集的大多数特征值都用零填充 - 那么 pca 是否有效?
【问题讨论】:
-
有什么功能,为什么是空的?如果它们就像文本文档中的词频,那么它们应该为零而不是空;这对于 PCA 来说仍然是一个很好的方案;如果它们是来自传感器的一些连续值,那么也许你想估算它们
-
这些特征是物理分析,由每个分析类型(例如硬度、元素浓度、颜色等)的单个浮点值组成,但对于每一行,大多数情况下只测量一些。这些值无法估算。
-
好吧 sklearn 不能处理包含空值的数据,所以你必须对它们做一些事情......如果你将它们设置为零,而如果你想它们不会是零测量它们,那么是的,它肯定会扭曲结果。也许您可以使用决策树来估算空值?
-
你的特征代表什么?
-
它可能无法解决您的问题,但您可以使用TruncatedSVD,这是另一种接受稀疏输入的类似 PCA 的分解方法。它可以处理您的数据,但可能无法达到您的预期。
标签: pandas scikit-learn pca sklearn-pandas