博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【原】关于使用Sklearn进行数据预处理 —— 缺失值(Missing Value)处理
阅读量:7227 次
发布时间:2019-06-29

本文共 1427 字,大约阅读时间需要 4 分钟。

关于缺失值(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中的缺失值。

转载地址:http://iudfm.baihongyu.com/

你可能感兴趣的文章
Linux 面试知识点笔记
查看>>
论flex布局和box布局的华为meta8手机自带浏览器的兼容
查看>>
dubbo与springcloud初识
查看>>
iis web.config 配置示例
查看>>
归并排序
查看>>
java 的转义字符
查看>>
SharedPreferences的使用注意事项
查看>>
sofa-pbrpc高级用法
查看>>
Oracle 函数返回表实例2种写法实例
查看>>
mysql数据库主从复制
查看>>
Shell标准输出、标准错误 >/dev/null 2>&1
查看>>
Android自定义对话框(Dialog)位置,大小
查看>>
设置python的默认编码为utf8
查看>>
简易sqlhelper-java
查看>>
通过案例对SparkStreaming 透彻理解三板斧之一:解密SparkStreaming运行机制
查看>>
HBuilder 学习笔记
查看>>
利用OpenStreetMap(OSM)数据搭建一个地图服务
查看>>
TopN算法与排行榜
查看>>
lucene排序算法之向量空间模型(一)
查看>>
新浪微博数据Json格式解析
查看>>