我想使用sklearn进行pca分析(然后是回归和kmeans聚类)。我有一个数据集,有20k个特征,200k行。然而,对于数据集中的每一行,只测量了一个子集(通常是20k中的任意5个左右)的特征。
我应该如何填充我的pandas数据框架/设置sklearn,以便sklearn不使用未测量值的实例的特性?(例如,如果我将null特征值设置为0.0,这会扭曲结果吗?)
,
X = array[:,0:n]
Y = array[:,n]
pca = PCA()
fit = pca.fit(X)
如果数据集用零填充大多数特征值-那么pca是有效的吗?
我看到3个选项,但没有一个是解决你的问题:
1)您将空值替换为0,但这肯定会使您的结果恶化;
2)用每个特征的平均值或中位数替换未知值,这可能更好,但它仍然会给你一个扭曲的PCA;
3)最后一个选项不使用PCA和搜索降维技术来处理稀疏数据