预处理数据的方法总结(使用sklearn-preprocessing)

本文总结了预处理数据的方法,包括使用sklearn.preprocessing进行数据标准化、正则化、二值化、类别特征编码、弥补缺失数据、创建多项式特征和自定义特征转换。强调了标准化在处理特征方差不一的问题,以及如何处理稀疏数据和异常值的数据。
摘要由CSDN通过智能技术生成

预处理数

1. 标准化:去均值,方差规模化

Standardization标准化:将特征数据的分布调整成标准正太分布,也叫高斯分布,也就是使得数据的均值维0,方差为1.

标准化的原因在于如果有些特征的方差过大,则会主导目标函数从而使参数估计器无法正确地去学习其他特征。

标准化的过程为两步:去均值的中心化(均值变为0);方差的规模化(方差变为1)。

在sklearn.preprocessing中提供了一个scale的方法,可以实现以上功能。

from sklearn import preprocessing
import numpy as np





创建一组特征数据,每一行表示一个样本,每一列表示一个特征

x = np.array([[1., -1., 2.],
[2., 0., 0.],
[0., 1., -1.]]
)

将每一列特征标准化为标准正太分布,注意,标准化是针对每一列而言的

x_scale = preprocessing.scale(x)

x_scale

array([[ 0.        , -1.22474487,  1.33630621],
       [ 1.22474487,  0.        , -0.26726124],
       [-1.22474487,  1.22474487, -1.06904497]])

 
 
 
  • 1
  • 2
  • 3
  • 4
# 可以查看标准化后的数据的均值与方差,已经变成0,1了
x_scale.mean(axis=0)
 
 
 
  • 1
  • 2
array([ 0.,  0.,  0.])

 
 
 
  • 1
  • 2
# axis=1表示对每一行去做这个操作,axis=0表示对每一列做相同的这个操作
x_scale.mean(axis=1)
 
 
 
  • 1
  • 2
array([ 0.03718711,  0.31916121, -0.35634832])

 
 
 
  • 1
  • 2
# 同理,看一下标准差
x_scale.std(axis=0)
 
 
 
  • 1
  • 2
array([ 1.,  1.,  1.])

 
 
 
  • 1
  • 2

preprocessing这个模块还提供了一个实用类StandarScaler,它可以在训练数据集上做了标准转换操作之后,把相同的转换应用到测试训练集中。

这是相当好的一个功能。可以对训练数据,测试数据应用相同的转换,以后有新的数据进来也可以直接调用,不用再重新把数据放在一起再计算一次了。

# 调用fit方法,根据已有的训练数据创建一个标准化的转换器
scaler = preprocessing.StandardScaler().fit(x)

scaler
 
 
 
  • 1
  • 2
  • 3
  • 4
StandardScaler(copy=True, with_mean=True, with_std=True)

 
 
 
  • 1
  • 2
# 使用上面这个转换器去转换训练数据x,调用transform方法
scaler.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值