数据价值-DataValues

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 501|回复: 0

[python] 关于使用Sklearn进行数据预处理_缺失值(Missing Value)处理

[复制链接]

1万

主题

1万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
39797
发表于 2017-3-17 16:31:10 | 显示全部楼层 |阅读模式
关于使用Sklearn进行数据预处理 —— 缺失值(Missing Value)处理,
关键词:sklearn 数据预处理 sklearn 预处理 sklearn 缺失值、sklearn 缺失值处理、missing value missing、return 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)处理
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|DataValues ( 赣ICP备16006919号-3 点击这里给我发消息 DataValues

GMT+8, 2019-2-19 21:44 , Processed in 0.116633 second(s), 32 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表