我们在进行模型训练时,不可避免的会遇到某些特征出现空值的情况,下面整理了几种填充空值的方法

1. 用固定值填充

对于特征值缺失的一种常见的方法就是可以用固定值来填充,例如0,9999, -9999, 例如下面对灰度分这个特征缺失值全部填充为-99

data['灰度分'] = data['灰度分'].fillna('-99')

2. 用均值填充

对于数值型的特征,其缺失值也可以用未缺失数据的均值填充,下面对灰度分这个特征缺失值进行均值填充

data['灰度分'] = data['灰度分'].fillna(data['灰度分'].mean()))

3. 用众数填充

与均值类似,可以用未缺失数据的众数来填充缺失值

data['灰度分'] = data['灰度分'].fillna(data['灰度分'].mode()))

4. 用上下数据进行填充

用前一个数据进行填充

data['灰度分'] = data['灰度分'].fillna(method='pad')

用后一个数据进行填充

data['灰度分'] = data['灰度分'].fillna(method='bfill')

5. 用插值法填充

data['灰度分'] = data['灰度分'].interpolate()

6. 用KNN进行填充

from fancyimpute import BiScaler, KNN, NuclearNormMinimization, SoftImpute
dataset = KNN(k=3).complete(dataset)

7. random forest进行填充

from sklearn.ensemble import RandomForestRegressor
zero_columns_2 = ['机构查询数量', '直接联系人数量', '直接联系人在黑名单数量', '间接联系人在黑名单数量','引起黑名单的直接联系人数量', '引起黑名单的直接联系人占比']
#将出现空值的除了预测的列全部取出来,不用于训练
dataset_list2 = [x for x in dataset if x not in zero_columns_2]
dataset_2 = dataset[dataset_list2]
# 取出灰度分不为空的全部样本进行训练
know = dataset_2[dataset_2['灰度分'].notnull()]
print(know.shape) #26417, 54
# 取出灰度分为空的样本用于填充空值
unknow = dataset_2[dataset_2['灰度分'].isnull()]
print(unknow.shape) #2078, 54y = ['灰度分']
x = [1]know_x2 = know.copy()
know_y2 = know.copy()
print(know_y2.shape)
#
know_x2.drop(know_x2.columns[x], axis=1, inplace=True)
print(know_y2.shape)
print(know_x2.shape)
#
know_y2 = know[y]
# RandomForestRegressor
rfr = RandomForestRegressor(random_state=666, n_estimators=2000, n_jobs=-1)
rfr.fit(know_x2, know_y2)# 填充为空的样本
unknow_x2 = unknow.copy()
unknow_x2.drop(unknow_x2.columns[x], axis=1, inplace=True)
print(unknow_x2.shape) #(2078, 53)
unknow_y2 = rfr.predict(unknow_x2)
unknow_y2 = pd.DataFrame(unknow_y2, columns=['灰度分'])

8. EM算法进行填充

缺失值处理----缺失值填充方法总结相关推荐

  1. 数据预处理+缺失值处理方案+Missing Value+pandas+缺失值填充方法、方案

    数据预处理+缺失值处理方案+Missing Value+pandas+缺失值填充方法.方案 缺失值+sklearn from sklearn.preprocessing import Imputer ...

  2. python做数据分析时缺失值填补、缺失值填充方法汇总

    在我们进行数据分析时,通常会遇到各种数据缺失的情况,针对这种情况我们该如何进行填补呢? 1.人工填补 该方法仅适用于小数据集,受个人因素影响. 2.平均值填补 对某一列的缺失值,采用该列的平均值填充 ...

  3. 机器学习数据预处理之缺失值:插值法填充+ lagrange插值+拉格朗日插值

    机器学习数据预处理之缺失值:插值法填充+ lagrange插值+拉格朗日插值 garbage in, garbage out. 没有高质量的数据,就没有高质量的数据挖掘结果,数据值缺失是数据分析中经常 ...

  4. 机器学习数据预处理之缺失值:插值法填充+多项式插值

    机器学习数据预处理之缺失值:插值法填充+多项式插值 garbage in, garbage out. 没有高质量的数据,就没有高质量的数据挖掘结果,数据值缺失是数据分析中经常遇到的问题之一.当缺失比例 ...

  5. (数据科学学习手札58)在R中处理有缺失值数据的高级方法

    一.简介 在实际工作中,遇到数据中带有缺失值是非常常见的现象,简单粗暴的做法如直接删除包含缺失值的记录.删除缺失值比例过大的变量.用0填充缺失值等,但这些做法会很大程度上影响原始数据的分布或者浪费来之 ...

  6. 机器学习中处理缺失值的7种方法

    机器学习中处理缺失值的7种方法 转载 |  https://cloud.tencent.com/developer/article/1680427 作者 | Satyam Kumar 编译 | VK ...

  7. python实现-用随机森林填补缺失值、均值填充0填充的比较

    sklearn中,可以使用sklearn.impute.SimpleImputer来轻松地填充均值等 import numpy as np import pandas as pd import mat ...

  8. 特征工程——缺失值显示和填充(集中趋势(众数、平均数、中位数)、缺失值矩阵图、条形图、集中趋势填充)

    一.引言 在数据挖掘过程中我们会发现由于各种原因都会存在缺少信息,数据不完整.产生的原因多种多样,主要分为机械原因和人为原因. 二.集中趋势 (1)众数:出现次数最多的变量值(M0):不易受极端值的影 ...

  9. 数据清理之重复值、缺失值的基本处理方法

    文章目录 数据去重 检测缺失值 缺失值的处理 删除 缺失值的填补替换 数据去重 python数据清洗中去重常用drop_duplicates函数,下面是它的参数说明 参数名称 说明 subset 接收 ...

最新文章

  1. 在Mac上利用pip3安装pyecharts模块
  2. 【编程题目】输入一个单向链表,输出该链表中倒数第 k 个结点
  3. http_build_query用法,挺方便的
  4. Leetcode 232. 用栈实现队列 解题思路及C++实现
  5. vue指令:v-pre原样输出,不解析插值表达式
  6. Java黑皮书课后题第2章:2.5(金融应用:计算小费)编写一个程序,读入一笔费用与小费利率,计算小费和总钱数
  7. linux2.6内核compat_ioctl函数
  8. Linux 多学习过程
  9. TIDB2.1版本升级步骤
  10. [NOIP2015]金币
  11. 特征根法--递推数列前4列
  12. 《深入浅出数据分析》读书笔记
  13. 收入时间序列——之预测总结篇
  14. 计算力学——有限元编程实现
  15. 支持向量机原理(理解SVM的三层境界)
  16. 全国62个城市建筑轮廓矢量数据
  17. 微信小程序样式大全(一)
  18. 最小生成树算法之Kruskal算法
  19. linux 小企鹅输入法,Linux(FC) 小企鹅输入法的安装
  20. 图片,让PPT富有冲击力(师从于珞珈老师)

热门文章

  1. 模式识别学习笔记(1)——基本概念
  2. JDE算月份数和算天数
  3. Think in another way【Matrix67】
  4. Linux系统网卡驱动phy工作原理解析
  5. MongoDB 语句查询
  6. Python列表 元组
  7. Qlcomm Android 开发环境,编译
  8. java之面向对象的英雄类
  9. MDT 评测 — 华为 P30 Pro 屏幕素质报告
  10. Thunderbird使用教程\好用的邮件客户端