背景
机器学习的本质是利用数据得到我们想要的函数关系,从而给出相关的预测。但是在实际生产过程中,由于各种原因很多样本采集的特征变量并不能做到完全覆盖所有样本,不同变量的缺失率可能达到70%以上。实际工作中对于这些变量的处理,我们可能并不是急于删除,而是首先从业务角度分析导致变量缺失率过高的原因,如果无法定位问题,接下来才是着手对缺失率过高的变量进行处理。
缺失的种类
- 完全随机缺失:没有规律,原因不详的缺失
- 随机缺失:该变量的缺失与其他其他变量有关。比如,变量A记录了某用户的用电量,变量B记录了记录用电的时间,如果变量A因为一些原因只在某个特定的时间内缺失时,那A的缺失类型就是随机缺失。
- 完全非随机缺失:缺失只与变量自身有关。比如记录中有些用户不愿透露个人信息导致的变量缺失。
说明:前两种缺失在变量充足的情况下可以直接删除,最后一种情况删除变量可能会导致样本出现偏差,从而导致模型偏差,所以处理第三类缺失时需要谨慎一些。
缺失值的统计方法
def get_missing_rate(df):
"""
获取dataframe变量缺失率
Args:
df: dataframe 需要统计缺失的dataframe
Returns:
mr_df: 统计好的缺失率dataframe
"""
import numpy as np
mr_df = df.co