我很难弄清楚如何处理数据插补没有意义的NaN变量。我正在尝试进行文本/文档聚类,并且有一些缺失的值需要保持缺失状态,因为没有明智的方式来填充它们。我的数据集包含一些数值,日期,文本等。实际上,DannyDannyDanny的example副标题为“在插补没有意义的情况下考虑情景”。是解决我的问题的好例子。在向量化之后,我需要执行PCA来降低维数,这样我就可以处理没有内存错误的大数据并减少计算时间。这是问题开始的地方,因为scikit-learn的PCA算法没有一个可以处理NaN的算法(或者可以吗?)。并且用sklearn.preprocessing.Imputer填充缺失值是没有道理的,因为;
-并非所有都是数字或连续值。实际上,有一些带日期和不带日期的列!
-其中一些必须保留为NaN,因为否则它们可能(或可能?)对聚类产生不良影响。
由于一些缺失的值,我不能只是简单地删除列(或行)。太松了... 我的问题是:
PS:对不起,我的英语不好
答案 0 :(得分:1)
否。
PCA意味着基本上每个输出变量在某种程度上都取决于每个输入变量。因此,投影后,整个向量将变为NaN。直观地,缺少值(不能将其表示为0)表示可以任意移动点。但是因为您仍然可以移动该点,所以您不知道它在任何坐标中的位置-它可能在任何位置。
PCA在低维连续数据上最有意义。您对数据的描述听起来并不适合PCA在这里使用。
答案 1 :(得分:1)
直觉上,如果您不能使用不同的方法进行插补,或者没有意义,那么您将删除这些行->但请注意,根据数据的不同,最终可能行数不多。仅当您具有良好的数据集且NaN的百分比很小时,这才起作用。
另一种方法是删除具有很高NaN的列,这时无论如何它们对模型不是很有用。
您可以查看的最后一种方法是用那些不在该列范围内的极端值,诸如“ -9999”之类的唯一标识符或您喜欢的值来填充这些值。大多数情况下,该算法可使算法提取异常值,而不将其计入模型。
希望这会有所帮助!