关于缺失值(missing value)的处理---机器学习 Imputer
关于缺失值(missing value)的处理
在sklearn的preprocessing包中包含了对数据集中缺失值的处理,主要是应用Imputer类进行处理。
首先需要说明的是,numpy的数组中可以使用np.nan/np.NaN(Not A Number)来代替缺失值,对于数组中是否存在nan可以使用np.isnan()来判定。
使用type(np.nan)或者type(np.NaN)可以发现改值其实属于float类型,代码如下:
1
2
3
4
5
6
7
8
|
>>> type (np.NaN) < type 'float' > >>> type (np.nan) < type 'float' > >>> np.NaN nan >>> np.nan nan |
因此,如果要进行处理的数据集中包含缺失值一般步骤如下:
1、使用字符串'nan'来代替数据集中的缺失值;
2、将该数据集转换为浮点型便可以得到包含np.nan的数据集;
3、使用sklearn.preprocessing.Imputer类来处理使用np.nan对缺失值进行编码过的数据集。
代码如下:
1
2
3
4
5
6
7
8
9
10
|
>>> from sklearn.preprocessing import Imputer >>> imp = Imputer(missing_values = 'NaN' , strategy = 'mean' , axis = 0 ) >>> X = np.array([[ 1 , 2 ], [np.nan, 3 ], [ 7 , 6 ]]) >>> Y = [[np.nan, 2 ], [ 6 , np.nan], [ 7 , 6 ]] >>> imp.fit(X) Imputer(axis = 0 , copy = True , missing_values = 'NaN' , strategy = 'mean' , verbose = 0 ) >>> imp.transform(Y) array([[ 4. , 2. ], [ 6. , 3.66666667 ], [ 7. , 6. ]]) |
上述代码使用数组X去“训练”一个Imputer类,然后用该类的对象去处理数组Y中的缺失值,缺失值的处理方式是使用X中的均值(axis=0表示按列进行)代替Y中的缺失值。
当然也可以使用imp对象来对X数组本身进行处理。
通常,我们的数据都保存在文件中,也不一定都是Numpy数组生成的,因此缺失值可能不一定是使用nan来编码的,对于这种情况可以参考以下代码:
1
2
3
4
5
6
7
8
9
10
11
12
|
>>> line = '1,?' >>> line = line.replace( ',?' , ',nan' ) >>> line '1,nan' >>> Z = line.split( ',' ) >>> Z [ '1' , 'nan' ] >>> Z = np.array(Z,dtype = float ) >>> Z array([ 1. , nan]) >>> imp.transform(Z) array([[ 1. , 3.66666667 ]]) |
上述代码line模拟从文件中读取出来的一行数据,使用nan来代替原始数据中的缺失值编码,将其转换为浮点型,然后使用X中的均值填补Z中的缺失值。
关于缺失值(missing value)的处理---机器学习 Imputer的更多相关文章
- Sklearn 与 TensorFlow 机器学习实战—一个完整的机器学习项目
本章中,你会假装作为被一家地产公司刚刚雇佣的数据科学家,完整地学习一个案例项目.下面是主要步骤: 项目概述. 获取数据. 发现并可视化数据,发现规律. 为机器学习算法准备数据. 选择模型,进行训练. ...
- 机器学习实战笔记(Python实现)-04-Logistic回归
--------------------------------------------------------------------------------------- 本系列文章为<机器 ...
- 【机器学习实战】第5章 Logistic回归
第5章 Logistic回归 Logistic 回归 概述 Logistic 回归虽然名字叫回归,但是它是用来做分类的.其主要思想是: 根据现有数据对分类边界线建立回归公式,以此进行分类. 须知概念 ...
- 机器学习实践之Logistic回归
关于本文说明,本人原博客地址位于http://blog.csdn.net/qq_37608890,本文来自笔者于2017年12月17日 19:18:31所撰写内容(http://blog.cs ...
- 机器学习实战(Machine Learning in Action)学习笔记————05.Logistic回归
机器学习实战(Machine Learning in Action)学习笔记————05.Logistic回归 关键字:Logistic回归.python.源码解析.测试作者:米仓山下时间:2018- ...
- 2-6 R语言基础 缺失值
#缺失值 Missing Value > #NaN不可识别NA> x <- c(1,NA,2,NA,3) > is.na(x)[1] FALSE TRUE FALSE TRUE ...
- python 缺失值处理(Imputation)
一.缺失值的处理方法 由于各种各样的原因,真实世界中的许多数据集都包含缺失数据,这些数据经常被编码成空格.nans或者是其他的占位符.但是这样的数据集并不能被scikit - learn算法兼容,因为 ...
- 机器学习算法( 五、Logistic回归算法)
一.概述 这会是激动人心的一章,因为我们将首次接触到最优化算法.仔细想想就会发现,其实我们日常生活中遇到过很多最优化问题,比如如何在最短时间内从A点到达B点?如何投入最少工作量却获得最大的效益?如何设 ...
- 机器学习实战之Logistic回归
Logistic回归一.概述 1. Logistic Regression 1.1 线性回归 1.2 Sigmoid函数 1.3 逻辑回归 1.4 LR 与线性回归的区别 2. LR的损失函数 3. ...
随机推荐
- 【luogu P1082 同余方程】 题解
最近一直在学习数论,讲得很快,害怕落实的不好,所以做一道luogu的同余方程练练手. 关于x的同余方程 ax ≡ 1 mod m 那么x其实就是求a关于m的乘法逆元 ax + my = 1 对于这个不 ...
- 解决Storm 和yarn 8080 端口冲突
本机装了Yarn和Storm后,启动Storm后,发现NodeMange无法启动,找了下没找着在哪修改.只好修改Storm的配置,在配置上添加 ui.port: "9999" 再启 ...
- maven pom 增加本地jar 依赖
https://www.cnblogs.com/huhongy/p/7337280.html <dependency> <groupId>org.hamcrest</gr ...
- c#解析分析SQL语句
最近总结了c#一般的功能,然后自己在博文中写了很多东西.主要是在用途上面.能够解决一些问题.现在分各个组件和方向写完了.主要的内容写了demo,也写了自己的项目组件和模型. 最后一个SQL分析.其实在 ...
- LeetCode 简单 - 最大子序和(53)
采用动态规划方法O(n) 设sum[i]为以第i个元素结尾且和最大的连续子数组.假设对于元素i,所有以它前面的元素结尾的子数组的长度都已经求得,那么以第i个元素结尾且和最大的连续子数组实际上,要么是以 ...
- springboot在yml配置文件中配置类的属性笔记
首先建立一个简单的实体类,我这里以学生为例,并加上@Component和@ConfigurationProperties(prefix ="student")注解,其中prefix ...
- 【super vlan的配置】
Super vlan的配置 一:根据项目需求搭建好拓扑图如下: 二:配置 1:由项目图进行理论分析:sw1属于三层交换,用于二层交换信息的转发;同时在sw1上可定义super vlan把sub vla ...
- 部署node api的二三事
当接到node开发node api的时候,我就想用docker来部署,众所周知,node的版本更新迭代很快.很多以前需要babel后才能采用的方法正在不断被node 原生的支持.如果随便更换生产服务器 ...
- php-5.6.26源代码 - hash存储结构 - hash算法
// zend_inline_hash_func 实现在文件“php-5.6.26\Zend\zend_hash.h” h = zend_inline_hash_func(arKey, nKeyLen ...
- 4.《python自省指南》学习
前言 前面几篇博客我都是通过python自省来分析代码并试图得出结论.当然,仅仅通过自省能解决的问题有限,但遇到问题还是不自主的去用这个功能,觉得对于认识代码的含义还是有一定帮助的.而这些自省的知 ...