机器学习训练营——机器学习爱好者的自由交流空间(入群联系qq:2279055353)

在这个例子里,我们向大家展示填补缺失值比丢弃它们得到的结果更好。但是请注意,缺失值填补并不总会改善预测结果,所以请使用交叉验证评价。有的时候,丢弃缺失行或使用标记值反而更有效。
一般时候,缺失值可以用均值、中位数或众数代替。当变量较多时,用中位数代替是一种稳健的方法。在本例中,填补将有助于分类器接近原始分数。

首先,导入必需的模块。

import numpy as npfrom sklearn.datasets import load_boston
from sklearn.ensemble import RandomForestRegressor
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import Imputer
from sklearn.model_selection import cross_val_score

导入模块后,从numpy工具包生成模拟数据集。

rng = np.random.RandomState(0)

使用函数RandomState获得随机数生成器。0为随机种子,只要随机种子相同,产生的随机数序列就相同。

加载“波士顿房价”数据集,该数据集在【Python实例第1讲】介绍过。

dataset = load_boston()
X_full, y_full = dataset.data, dataset.target
n_samples = X_full.shape[0]
n_features = X_full.shape[1]
print(X_full.shape)

第一步:估计完整数据集的分数

创建一个由100棵树组成的随机森林估计量estimator,随机状态是随机数生成器的种子0.一个随机森林是一个拟合多棵分类决策树的估计量,它使用平均化的办法来改善预测准确率,控制过度拟合。构建决策树的子样本是原始样本的bootstrap样本。

estimator = RandomForestRegressor(random_state=0, n_estimators=100)

使用交叉验证法评价分数,取分数的平均值,保留小数点后两位打印出来。

score = cross_val_score(estimator, X_full, y_full).mean()
print("Score with the entire dataset = %.2f" % score)

第二步:在75%的数据行里增加缺失值

missing_rate = 0.75
n_missing_samples = int(np.floor(n_samples * missing_rate))
missing_samples = np.hstack((np.zeros(n_samples - n_missing_samples,dtype=np.bool),np.ones(n_missing_samples,dtype=np.bool)))
rng.shuffle(missing_samples)
missing_features = rng.randint(0, n_features, n_missing_samples)

第三步:估计不包括缺失行的子集分数

X_filtered = X_full[~missing_samples, :]
y_filtered = y_full[~missing_samples]
estimator = RandomForestRegressor(random_state=0, n_estimators=100)
score = cross_val_score(estimator, X_filtered, y_filtered).mean()
print("Score without the samples containing missing values = %.2f" % score)

第四步:估计填补缺失值后的数据集分数

将缺失值处标记为0, 再将数据集里标记为0的项,用该项所在列的均值代替。由于列表示特征,此即用该特征的均值代替缺失值。最后,在填补后的数据集上计算分数。

X_missing = X_full.copy()
X_missing[np.where(missing_samples)[0], missing_features] = 0
y_missing = y_full.copy()
estimator = Pipeline([("imputer", Imputer(missing_values=0,strategy="mean",axis=0)),("forest", RandomForestRegressor(random_state=0,n_estimators=100))])
score = cross_val_score(estimator, X_missing, y_missing).mean()
print("Score after imputation of the missing values = %.2f" % score)

让我们来比较三种情况下的分数值:

Score with the entire dataset = 0.56

Score without the samples containing missing values = 0.48

Score after imputation of the missing values = 0.57

由此可见,填补后的分值更加接近完整分值。

精彩内容,请关注微信公众号:统计学习与大数据

【Python实例第4讲】填补缺失值相关推荐

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

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

  2. python均值插补法填补缺失值_R语言笔记(四):特殊值处理

    输入数据后,我们就能在 R 中对数据进行一系列的操作了.但现实获得的第一手数据往往都是不完整.不整齐的,比如存在数据本身缺失值.离群值,数据框存在冗余行或列,抑或数据需要进一步加工才能获取有意义的变量 ...

  3. 五、实例:在波士顿房价数据集上用随机森林回归填补缺失值

    在波士顿房价数据集上用随机森林回归填补缺失值 点击标题即可获取源代码和笔记 一.引入 我们从现实中收集的数据,几乎不可能是完美无缺的,往往都会有一些缺失值.面对缺失值,很多人选择的方式是直接将含有缺失 ...

  4. python中bool函数的用法_python3实战python函数每日一讲 - bool([x])

    bool([x]) 英文说明:Convert a value to a Boolean, using the standard truth testing procedure. If x is fal ...

  5. python实例豆瓣代码_Python实例:通过selenium模拟登陆豆瓣

    前几天写的<Python实例:分析豆瓣影片评论Ver 1.0版本>文章中,关于爬取数据过频繁导致IP被封禁的事情让我对豆瓣数据的爬取中断了.忽然想到之前有写过关于关于使用selenium库 ...

  6. 利用随机森林填补缺失值

    利用随机森林填补缺失值 介绍 利用随机森林填补缺失值 介绍 说到缺失值,我想各位在进行数据分析之前或多或少都是会遇到的.在做有关机器学习的项目的时候,出题人都是会给你一个好几万好几十万的数据,可能会出 ...

  7. python快速入门精讲_Python快速入门精讲

    基础入门篇 第0章从零开始3 0.1克服编程恐惧3 0.2如何写出好程序4 0.3为什么选择Python5 0.4Python的发展和应用6 0.5一些建议8 0.6多平台搭建Python开发环境10 ...

  8. 在python中浮点数怎样转整数_python 浮点数 转 整数python函数每日一讲 - all()

    W WW.002pc .COM对<python 浮点数 转 整数python函数每日一讲 - all()>总结来说,为我们python培训很实用. all(iterable) 版本:该函数 ...

  9. pandas之离散化数据处理get_dummies以及填补缺失值的方法

    文章目录 介绍 实例 用途 拓展 正态分布拟合 随机森林 介绍 pandas.get_dummies(data,prefix=None, prefix_sep='_', dummy_na=False, ...

  10. 【数据分析师-python基础】python基础语法精讲

    python基础语法精讲 1 从数字开始 1.1 理解整数.浮点数.复数几种类型对象 1.2 掌握运算及其相关的常用函数 2 变量.表达式和语句 2.1 变量作用及定义的方法 2.2 变量命名原则和习 ...

最新文章

  1. rsync+inotify实现实时同步案例--转
  2. java如何获得当前文件路径
  3. 训练神经网络适合使用交叉熵(cross_entropy)错误率,而不是分类错误率或是均方差
  4. 关于python2到python3更新的一些书写规则的更改
  5. 电商面试经验(mybatis)
  6. 基于珞珈一号夜间灯光数据的GDP空间化
  7. mysql数据库闪退
  8. PowerDesigner15下载安装
  9. Android 360全景视频播放。
  10. 了解、熟悉、精通 的三种并代表什么意思
  11. 加泰罗尼亚理工大学 计算机 排名,加泰罗尼亚理工大学排名
  12. 牛啊!微信支持发送彩色红包~~
  13. 5.5.JMeter中调度器起作用(需要循环次数设置成永远)
  14. 科技视界杂志科技视界杂志社科技视界编辑部2022年第21期目录
  15. 西安邮电大学第五届ACM-ICPC校赛(同步赛)
  16. 计算机毕业论文乐谱播放器,给大家推荐一个超强的播放器!我刚发现的。居然显示乐谱...
  17. Lua入门(1) 编译环境、变量类型与三种结构的实现
  18. python爬取小说爬取_用python爬取笔趣阁小说
  19. http://p.codekk.com/
  20. Python Cookbook - 数字的四舍五入 (round(value, ndigits) 函数)

热门文章

  1. AM3352启动分析:
  2. poj 1503 Integer Inquiry (高精度运算)
  3. python之optparse模块
  4. Javascript 判断浏览器是否为IE的最短方法
  5. mysql建表时添加时间默认值只存储时分秒且自动存储
  6. Security+ 学习笔记56 增强隐私保护的技术
  7. MySQL 第四次练习(多表查询)
  8. ubuntu 16.04无法正常关机、重启
  9. Java关于数据结构的实现:散列
  10. config.txt for raspberry pi b 2