特征预处理和特征生成 (三)缺失值的处理

一,填充缺失值

填充NaN的方法要取决于特定情况!
填充缺失值常用的方法有以下三种:

  • 将NaN替换为一个常数,如-1,-999等等。
    这种方法可以认为是将缺失值看成了一个单独的类别。这种方法的缺点是线性网络的性能会受到影响。
  • 将NaN替换为均值或者中位数、众数等。
    这种方法通常对简单线性模型和神经网络有益。但是对基于树的模型而言,首先选择缺失值的对象可能会更困难。
  • 通过已有的值构建出缺失值的值,例如可以专门通过一个模型来预测缺失值。
  • 一些模型自带缺失值处理功能,不用专门再处理缺失值,如XGBoost和CatBoost。

需要注意的是有时候缺失值已经被组织者替换了!

二,利用缺失值生成新特征

通常情况下,在特征生成之前要避免填充NaNs!

1,二值特征isnull可能会很有用,它指明了哪些特征是缺失值,可以看做一个类别特征。

在计算平均值或中位数时,这种方法可以解决树和神经网络的问题。 但是这样做的缺点是我们会在数据集中增加两倍的列数。

2,我们想用数字特征对类别特征进行编码。 为了达到这个目的,我们计算每个类别的数字特征的平均值,并用这些平均值替换类别。
在计算平均值的时候一般要先忽视缺失值!否则就会出现下面的情况!类别B进行数字编码后的特征会十分接近填充的值!

3,有时我们也可以那些outliers看成缺失值。

4,有时候一些类别特征的一些类别不会出现在训练数据中,但我们可以加一些全局特征,如每个类别在训练集和测试集中出现的次数,这样有可能对预测那些没在训练集出现的类别有一些帮助,如下所示。

三,总结

猜你喜欢

转载自blog.csdn.net/h2026966427/article/details/80163785
今日推荐