用sklearn.preprocessing做数据预处理(五)——缺失数据

在scikit-learn的模型中都是假设输入的数据是数值型的,并且都是有意义的。但如果有缺失数据是通过NAN或者空值来表示的话,就无法识别与计算了。要弥补缺失值可以使用均值、中位数、众数等。Imputer这个类可以实现。

import numpy as np
from sklearn.preprocessing import Imputer
imp = Imputer(missing_values='NaN', strategy='mean', axis=0 )
imp.fit([[1,1],[np.nan,1],[7,7]])    #第一类平均值(1+7)/2=4,第二列平均值(1+1+7)/3=3

Imputer(axis=0, copy=True, missing_values='NaN', strategy='mean', verbose=0)

x = [[np.nan, 2], [6, np.nan], [7,6]]   #第一列np.nan用平均值4代替,第二列np.nan用平均值3来代替
imp.transform(x)

array([[4., 2.],
       [6., 3.],
       [7., 6.]])

Imputer类同样也可以支持稀疏矩阵,以下例子将0作为了缺失值,为其补上均值

import scipy.sparse as sp
#创建一个稀疏矩阵
x = sp.csc_matrix([[1,2],[0,3],[7,6]])
imp = Imputer(missing_values=0, strategy='mean', verbose=0 )
imp.fit(x)
x_test = sp.csc_matrix([[0,2], [6,0], [7,6]])
imp.transform(x_test)

array([[4.        , 2.        ],
       [6.        , 3.66666667],
       [7.        , 6.        ]])

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值