【原】关于使用Sklearn进行数据预处理 —— 缺失值(Missing Value)处理
关于缺失值(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中的缺失值。
【原】关于使用Sklearn进行数据预处理 —— 缺失值(Missing Value)处理的更多相关文章
- 关于使用sklearn进行数据预处理 —— 归一化/标准化/正则化
一.标准化(Z-Score),或者去除均值和方差缩放 公式为:(X-mean)/std 计算时对每个属性/每列分别进行. 将数据按期属性(按列进行)减去其均值,并处以其方差.得到的结果是,对于每个属 ...
- 【Sklearn系列】使用Sklearn进行数据预处理
这篇文章主要讲解使用Sklearn进行数据预处理,我们使用Kaggle中泰坦尼克号事件的数据作为样本. 读取数据并创建数据表格,查看数据相关信息 import pandas as pd import ...
- Python: sklearn库——数据预处理
Python: sklearn库 —— 数据预处理 数据集转换之预处理数据: 将输入的数据转化成机器学习算法可以使用的数据.包含特征提取和标准化. 原因:数据集的标准化(服从均值为 ...
- 【sklearn】数据预处理 sklearn.preprocessing
数据预处理 标准化 (Standardization) 规范化(Normalization) 二值化 分类特征编码 推定缺失数据 生成多项式特征 定制转换器 1. 标准化Standardization ...
- [Scikit-Learn] - 数据预处理 - 缺失值(Missing Value)处理
reference : http://www.cnblogs.com/chaosimple/p/4153158.html 关于缺失值(missing value)的处理 在sklearn的prepro ...
- 【原】关于使用sklearn进行数据预处理 —— 归一化/标准化/正则化
一.标准化(Z-Score),或者去除均值和方差缩放 公式为:(X-mean)/std 计算时对每个属性/每列分别进行. 将数据按期属性(按列进行)减去其均值,并处以其方差.得到的结果是,对于每个属 ...
- 使用sklearn进行数据预处理 —— 归一化/标准化/正则化
一.标准化(Z-Score),或者去除均值和方差缩放 公式为:(X-mean)/std 计算时对每个属性/每列分别进行. 将数据按期属性(按列进行)减去其均值,并除以其方差.得到的结果是,对于每个属 ...
- sklearn preprocessing 数据预处理(OneHotEncoder)
1. one hot encoder sklearn.preprocessing.OneHotEncoder one hot encoder 不仅对 label 可以进行编码,还可对 categori ...
- 机器学习实战基础(十):sklearn中的数据预处理和特征工程(三) 数据预处理 Preprocessing & Impute 之 缺失值
缺失值 机器学习和数据挖掘中所使用的数据,永远不可能是完美的.很多特征,对于分析和建模来说意义非凡,但对于实际收集数据的人却不是如此,因此数据挖掘之中,常常会有重要的字段缺失值很多,但又不能舍弃字段的 ...
随机推荐
- linq 延迟执行带来的困扰
有这样一个案例: var filteredResult = from f in orgFileList select f; ; i < WorkStatusFilters.ListWorkSta ...
- sql ltrim rtrim
sql中用LTRIM ( ),RTRIM ( ).分别截断首尾空格,返回字符表达式. 例1: DECLARE @string_to_trim varchar(60)SET @string_to_tri ...
- Android之ADB指令
Android打包过程 aapt Android应用打包工具 adb Android调试桥 下面打包过程,eclipse帮我们自动打包好run as->Android application r ...
- (引用) unittest测试驱动之执行测试(三)
转载:http://www.wtoutiao.com/p/ydeoyY.html 在unittest的模块中,提供了TestRunner类来进行运行测试用例,在实际的应用中,经常使用的是TextTes ...
- OutSystems学习一,安装以及入门
官方网站:http://www.outsystems.com/home/HomePage.aspx 安装完成后,在官网申请自己的管理云平台 启动客户端 详细参考帮助,跟着走就行
- IIS mime类型 任意类型
HTTP头 任意mime类型 .* application/octet-stream
- oracle中的数据对象
oracle中的数据对象有表.视图.索引.序列等 表的相关操作 1.创建表 方式一: 方式二:create table person( create table person1 id number(1 ...
- JavaScript 中2个等号与3个等号的区别
首先,== equality 等同,=== identity 恒等. ==, 两边值类型不同的时候,要先进行类型转换,再比较. ===,不做类型转换,类型不同的一定不等. 下面分别说明: 先说 === ...
- [转载]提高rails new时bundle install运行速度
最近在新建rails项目时,rails new老是卡在bundle install那里,少则五分钟,多则几十分.这是因为rails new时自动会运行bundle install,而bundle in ...
- jquery load 加载改造,只加载body
背景: 项目中大量用到了jquery和easyui组件,原生load经常出现主页面异常,原因是组件被重复初始化.也考虑过用iframe,但是在实际项目中的效果,最终取消了iframe方案,也尝试了其他 ...