处理缺失的分类值 ML

4

我已经阅读了关于处理分类数据中缺失值的替换缺失值

数据集有大约 6 个分类列 存在 缺失值。这将用于二元分类问题。

我看到不同的方法,其中一种是只需将类别列中的缺失值保留为原样,另一种是使用from sklearn.preprocessing import Imputer进行插补,但不确定哪种更好。

如果插补是更好的选择,那么在应用模型之前,我可以使用哪些库,例如LR、决策树、随机森林

谢谢!


1
不同的模型和数据集处理缺失值的方式各有不同,例如XGBoost可以自动处理缺失值。 - avvinci
2个回答

2

处理缺失数据的方法有多种:

  • 一些模型可以自动处理(例如XGBoost,LightGBM)
  • 您可以尝试使用模型进行插补。您应该将数据分成训练集和测试集,并尝试不同的模型以测量哪个模型最好。但往往效果并不好。Sklearn中实现了KNNImputer
  • 您还可以定义规则:根据数据集设置缺失值为0、平均数、中位数或其他适用值。Sklearn中实现了SimpleImputer
  • 如果以上方法都无法解决问题,您也可以删除具有缺失值的行。
更多关于sklearn中值输入的细节:https://scikit-learn.org/stable/modules/impute.html

2

针对 @CoMartel 的回答,

  1. 没有特定的规则可以保证您获得良好的结果。您需要逐一检查所有已知的方法并观察模型的表现。

  2. 但是,如果某列的缺失值比例非常高(例如超过总行数的50%。阈值也可能有所不同),最好删除该列。

  3. 此外,如果您的分类数据缺失,应尽量避免使用平均值。假设您将其中一个类别编码为1,另一个类别编码为2,但平均值为2.5,则实际上不代表任何类别。众数比平均值和中位数更好。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接