具有未知特征值的 scikit-learn PCA

scikit-learn PCA with unknown feature values

我想使用 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 是否有效?

我看到了 3 个选项,但是 none 是您问题的解决方案:

1) 您将空值替换为 0,但这肯定会使您的结果变差;

2) 你用每个特征的均值或中值替换未知值,这可能会更好,但它仍然会给你一个扭曲的主成分分析;

3) 最后一个选项不使用 PCA 并搜索稀疏数据的降维技术。