处理缺失的分类值 ML

Handling missing categorical values ML

关于处理分类数据中的缺失值,我已经完成了

数据集有大约 6 categorical columnsmissing values。这将用于二元分类问题

我看到了不同的方法,一种是 just leave the missing values in category column as such,另一种是使用 from sklearn.preprocessing import Imputer 进行估算,但不确定哪个更好。

如果 imputing 是更好的选择,我可以在应用 LR,Decision Tree, RandomForest 等模型之前使用哪些库。

谢谢!

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

  • 一些模型会处理它(例如 XGBoost、LightGBM)
  • 你可以尝试用一个模型来估算它们。您应该将数据分成训练集和测试集,并尝试不同的模型来衡量哪个模型效果最好。但更多时候不是,它的效果不是很好。在 sklearn
  • 中实现了 KNNImputer
  • 您还可以定义规则:将缺失值设置为 0、平均值、中位数或任何有效的值,具体取决于您的数据集。这是 sklearn
  • 中的一个 SimpleImputer 实现
  • 如果上面的 none 对您有用,您还可以删除缺少值的行。

有关在 sklearn 中估算值的更多详细信息:https://scikit-learn.org/stable/modules/impute.html

添加到@CoMartel,

  1. 不存在可以保证您获得良好结果的特定规则。您需要一一检查所有已知方法并观察模型的性能。

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

  3. 此外,如果您缺少分类数据,您应该尝试避免均值,因为假设您将其中一个类别编码为 1,其他类别编码为 2,但均值是 2.5,它不代表任何实际上类别。该模式将是比均值和中位数

  4. 更好的选择