Python 在特征向量中输入多个缺失值
编辑的帖子 这是一个简短的,有点澄清的版本,原来的职位Python 在特征向量中输入多个缺失值,python,r,machine-learning,missing-data,Python,R,Machine Learning,Missing Data,编辑的帖子 这是一个简短的,有点澄清的版本,原来的职位 我们有一个训练数据集(一些特征是显著相关的)。要素空间有20个维度(全部连续) 我们需要使用训练数据训练一个非参数(大多数特征形成非线性子空间,我们不能为其中任何一个假设分布)输入(kNN或基于树的回归) 我们需要使用经过训练的插补器预测查询数据中的多个缺失值(一个查询特征向量最多可以有13个缺失特征,因此插补器应该处理缺失特征的任意组合)注意不应使用查询数据以任何方式重新训练/拟合插补器(就像我目前发现的所有主流R软件包中一样:Ameli
Amelia
,impute
,mi
和mice
…)。也就是说,插补应完全基于培训数据李>
sklearn.ensemble.extratreeClassifier
进行分类,尽管树集合可以处理缺失数据情况,但执行插补有三个原因
scikit
树集成的实现(包括外部树
和随机林
)不会处理缺失值。但这一点并不重要。如果不是前两个,我会使用rpy2
+一些不错的R实现impute
,sklearn.preprocessing.Imputer
,orange
)来处理具有不同缺失值集的特征向量,也就是说,对于缺失特征的所有可能组合,我们希望只有一个插补器类别
信息外,查询数据具有相同的结构
v1 v2 v3 v4 v5 category
0.40524 0.71542 NA 0.81033 0.8209 1
0.78421 0.76378 0.84324 0.58814 0.9348 2
0.30055 NA 0.84324 NA 0.60003 1
0.34754 0.25277 0.18861 0.28937 0.41394 1
NA 0.71542 0.10333 0.41448 0.07377 1
0.40019 0.02634 0.20924 NA 0.85404 2
0.56404 0.5481 0.51284 0.39956 0.95957 2
0.07758 0.40959 0.33802 0.27802 0.35396 1
0.91219 0.89865 0.84324 0.81033 0.99243 1
0.91219 NA NA 0.81033 0.95988 2
0.5463 0.89865 0.84324 0.81033 NA 2
0.00963 0.06737 0.03719 0.08979 0.57746 2
0.59875 0.89865 0.84324 0.50834 0.98906 1
0.72092 NA 0.49118 0.58814 0.77973 2
0.06389 NA 0.22424 0.08979 0.7556 2
基于最新的更新,我想我会推荐反对kNN或基于树的算法。由于插补是目标,而不是您选择的方法的结果,因此您需要一种算法来学习完成不完整数据 对我来说,这似乎非常适合使用去噪自动编码器。如果你熟悉神经网络,这是相同的基本原理。您不需要训练预测标签,而是训练模型预测输入数据,这是一个显著的转折 “去噪”部分指的是一个中间步骤,在尝试预测之前,您可以将输入数据的某些百分比随机设置为0。这迫使算法学习更丰富的特征,以及在缺少片段时如何完成数据。在您的情况下,我建议您在培训中少辍学(因为您的数据已经缺少功能),在测试中不要辍学 如果不先查看数据,就很难编写一个有用的示例,但是要了解自动编码器的基本功能(以及完整的代码实现