处理SVM中缺少的属性

时间:2016-05-20 08:56:40

标签: machine-learning scikit-learn classification svm missing-data

我有2500条记录的数据集。每条记录都有100个属性。我面临的问题是,其中许多记录都缺少一个(或多个)属性。由于这些记录数量很大(大约800个),我不能忽视这些记录。我的所有属性都是数字。我的目标属性是分类的。它有6个可能的类。我打算将<​​strong> SVM分类器用于培训目的。

我应该使用什么方法来处理缺少的属性值?

此外,我的测试数据也包含缺少的属性。如何处理测试数据中的缺失值?

1 个答案:

答案 0 :(得分:3)

由于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]])

最佳解决方案是,要求领域专家填写缺失值,但这通常是不可能的。