我有一个包含 2500 条记录的数据集。每条记录有 100 个属性。我面临的问题是,其中许多记录缺少一个(或多个)属性值。由于此类记录数量众多(约800条),我不能忽视这些记录。我的所有属性都是数字。我的目标属性是分类的。它有6个可能的类。我计划将 SVM 分类器用于训练目的。
我应该使用什么方法来处理缺少的属性值?
此外,我的测试数据也包含缺少的属性。如何处理测试数据中的缺失值?
由于 2500 个数据集中的 800 个实例相当高,因此删除它们可能确实不是最佳选择。
由于您正在处理数值属性,因此常见的技术是查找一些可用于缺失数据的常规值。通常选择均值是为了这些目的。
sklearn 提供了一个预处理器,可以在 sklearn.preprocessing.Imputer 中执行此操作
。一个例子:
from sklearn.preprocessing import Imputer
imp = Imputer(missing_values='NaN', strategy='mean', axis=0)
imp.fit([[1, 2], [np.nan, 3], [7, 6]])
当然,最好的解决方案是要求领域专家填写缺失值,但这通常是不可能的。