如果我尝试预测样本的标签,但样本缺少特征,我应该如何处理?

问题描述

我现在有一个概念上的问题;我知道当 .predict() 用于具有 NaN 值的示例时,sklearn 不喜欢它,但是如果我想为具有 NaN/缺失特征的示例预测标签,我该怎么办?

目前,我将 NaN 单元格替换为 -999 作为占位符度量,但我不确定这是否是个好主意。遗憾的是,搜索预测样本中的缺失值不会产生有用的结果。

解决方法

您可以尝试的一种方法是用您用来填充训练数据集中缺失值的值来填充测试示例中的缺失值。例如,如果您用训练数据的均值填充该特征的缺失值,则可以使用该均值来填充测试示例中的缺失值。

,

当您的数据完整时,机器学习模型的性能会更好,因此建议您使用汇总统计数据或与位置接近的数据点相同的信息(例如使用 KNN)来估算缺失值。

Scikit Learn 包含一个 suite of algorithms to impute missing values。最常见的方法是将 SimpleImputer 与“平均”策略结合使用。

您还可以使用更简单的方法并使用 Pandas 用 fillna() 填充数据集中的所有 NA 或使用 dropna() 删除 NA。

熟悉您正在处理的数据非常重要。有时丢失的数据是有意义的。例如,在处理收入数据时,一些非常富裕的人拒绝披露他们的收入,而低收入者总是会披露。在这种情况下,如果将前一组的收入替换为 0 或平均值,则预测结果可能无效。

how to handle missing data in Python 上查看此分步指南。