sklearn的数据预处理

本文介绍使用sklearn.preprocessing进行数据预处理的方法,包括Z-score标准化、MinMax标准化和MaxAbs标准化等常用技术。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据预处理

概要

sklearn是一个比较常用的机器学习库,其中的sklearn.preprocessing包含了常用的预处理函数,一般在kaggle等数据竞赛网站拿到数据的时候,首先要观察数据特征,分布等信息,然后进行数据预处理。数据预处理有利于计算机进行计算。

原始数据存在的问题: 
1. 存在缺失值 
2. 存在异常点及噪声 
3. 各个特征的取值范围比例不一 
4. 数据表现形式不一 
5. 维度过高,部分特征间线性相关

Z-score标准化

Z-score标准化就是将数据变化为服从均值为0,方差为1的正太分布,对于不知道数据最大最小值的时候适用,但是会改变数据的分布。


from sklearn import preprocessing
import numpy as np

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

#第一种方法
x_scale_1 = preprocessing.scale(x)
'''
[[ 1.22474487  0.26726124  1.22474487]
 [ 0.         -1.33630621  0.        ]
 [-1.22474487  1.06904497 -1.22474487]]
 '''

#第二种方法
scaler = preprocessing.StandardScaler()
x_scale_2 = scaler.fit_transform(x)
'''
[[ 1.22474487  0.26726124  1.22474487]
 [ 0.         -1.33630621  0.        ]
 [-1.22474487  1.06904497 -1.22474487]]
 '''

StandardScaler(copy=True, with_mean=True, with_std=True)
with_mean=False #不减去均值
with_std=False  #不除以标准差

MinMax标准化

MinMax标准化适用于知道最大值和最小值的数据,标准化后的数据将会落在[0,1]区间内,如果有异常值则会将数据分布不均匀,向异常值的另一侧堆积。

scaler = preprocessing.MinMaxScaler()
x_scaled = scaler.fit_transform(x)
'''
before
[[ 1.  0.  2.]
 [ 0. -2.  1.]
 [-1.  1.  0.]]
 after
[[ 1.          0.66666667  1.        ]
 [ 0.5         0.          0.5       ]
 [ 0.          1.          0.        ]]
'''

MaxAbs标准化

MaxAbs标准化根据最大值的绝对值进行标准化,标准化后的数据将会落在[-1, 1]

scaler = preprocessing.MaxAbsScaler()
x_scaled = scaler.fit_transform(x)
'''
before
[[ 1.  0.  2.]
 [ 0. -2.  1.]
 [-1.  1.  0.]]
 after
[[ 1.   0.   1. ]
 [ 0.  -1.   0.5]
 [-1.   0.5  0. ]]
'''




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值