每天一点python——缺失值处理
来源:互联网 发布:淘宝直播买翡翠 编辑:程序博客网 时间:2024/05/18 20:10
在sklearn的preprocessing包中包含了对数据集中缺失值的处理,主要是应用Imputer类进行处理。
首先需要说明的是,numpy的数组中可以使用np.nan/np.NaN(Not A Number)来代替缺失值,对于数组中是否存在nan可以使用np.isnan()来判定。
使用type(np.nan)或者type(np.NaN)可以发现改值其实属于float类型,代码如下:
- >>>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对缺失值进行编码过的数据集。
代码如下:
- >>>from sklearn.preprocessingimport 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来编码的,对于这种情况可以参考以下代码:
- >>> 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中的缺失值。
转自:http://www.cnblogs.com/chaosimple/p/4153158.html
0 0
- 每天一点python——缺失值处理
- 每天一点python——缺失值处理
- Python处理缺失值
- 每天一点python——python数据类型
- 每天一点python——删除文件
- 每天一点python——类
- 每天一点python —— yield
- 每天一点python——xlrd
- 每天一点python ——python面向对象
- Python 中的缺失值及其处理
- 每天一点python —— 迭代器与生成器
- 每天一点——python map()和reduce()
- Python处理缺失数据
- 缺失值的处理——R语言
- pandas入门——数据缺失值处理
- 数据清洗(二)——缺失值处理
- 每天一点python——八大排序算法的Python实现
- Python中重复值、缺失值、空格值处理
- 串口通信数据位长度对传输数据的影响
- Java注解
- JavaScript库
- linux 安装tomat
- 华为OJ——简单错误记录
- 每天一点python——缺失值处理
- 升级Xcode之后VVDocumenter-Xcode不能用的解决办法
- 数据结构之堆和栈
- [C++STL]算法<algorithm>中各种算法解析
- MLE,MAP和Bayes参数估计的区别
- js学习笔记(闭包)
- ChemDraw Prime 15绘制氧化锡的技巧
- 华为OJ——密码验证合格程序
- android学习笔记