Machine_Learning

scikit_learn学习笔记十一——机器学习缺失值处理

2018-09-02  本文已影响96人  深思海数_willschang

在处理缺失数据的时候,最常用的方法是:

  1. 删除 ,最简单最直接的方法,很多时候也是最有效的方法,这种做法的缺点是可能会导致信息丢失。删除有缺失数据的样本删除有过多缺失数据的特征

  2. 补全用规则或模型将缺失数据补全,这种做法的缺点是可能会引入噪声。

    • 平均数、中位数、众数、最大值、最小值、固定值、插值等等建立一个模型来“预测”缺失的数据。
    • KNN, Matrix completion等方法引入虚拟变量(dummy variable)来表征是否有缺失,是否有补全。
    • 把缺失列当成标签,用剩下变量来预测缺失值。一般用比较简单的模型,比如可以用kNN,regression tree。这个方法的缺点是引入了偏差。
  3. 忽略有一些模型,如随机森林,自身能够处理数据缺失的情况,在这种情况下不需要对缺失数据做任何的处理,这种做法的缺点是在模型的选择上有局限。

在sklearn的preprocessing包中主要是应用Imputer类进行缺失值处理

from sklearn.proprecessing import Imputer
"""
填补缺失值:sklearn.preprocessing.Imputer(missing_values=’NaN’, strategy=’mean’, axis=0, verbose=0, copy=True)

主要参数说明:

missing_values:缺失值,可以为整数或NaN(缺失值numpy.nan用字符串‘NaN’表示),默认为NaN

strategy:替换策略,字符串,默认用均值‘mean’替换

①若为mean时,用特征列的均值替换

②若为median时,用特征列的中位数替换

③若为most_frequent时,用特征列的众数替换

axis:指定轴数,默认axis=0代表列,axis=1代表行

copy:设置为True代表不在原数据集上修改,设置为False时,就地修改,存在如下情况时,即使设置为False时,也不会就地修改
"""

【参考】

  1. https://zhuanlan.zhihu.com/p/40775756
上一篇下一篇

猜你喜欢

热点阅读