处理 SVM 中的缺失属性

Posted

技术标签:

【中文标题】处理 SVM 中的缺失属性【英文标题】:Handle Missing attributes in SVM 【发布时间】:2016-09-17 11:03:34 【问题描述】:

我有一个包含 2500 条记录的数据集。每条记录有 100 个属性。我面临的问题是这些记录中的许多都有一个(或多个)属性缺少值。由于此类记录数量众多(大约 800 条),我不能忽略这些记录。我所有的属性都是数字。我的目标属性是分类的。它有 6 个可能的类。我计划使用 SVM 分类器 进行训练。

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

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

【问题讨论】:

【参考方案1】:

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

当然,最好的解决方案是请领域专家填写缺失值,但这通常是不可能的。

【讨论】:

以上是关于处理 SVM 中的缺失属性的主要内容,如果未能解决你的问题,请参考以下文章

如何让 SVM 很好地处理 scikit-learn 中的缺失数据?

单元无回答的缺失数据处理方法

spss16.0缺失值是啥意思

pandas dataframe缺失值(np.nan)处理:识别缺失情况删除0值填补均值填补中位数填补加缺失标签插值填充详解及实例

机器学习决策树为什么对缺失值不敏感,如何处理缺失值?

if (any(co)) 中的错误:需要 TRUE/FALSE 的缺失值