使用sklearn进行数据标准化

本文详细介绍了如何使用sklearn库中的preprocessing模块进行数据标准化处理,包括去除数据集的均值并将其方差缩放至1的过程。通过具体示例展示了如何应用scale函数和StandardScaler类实现数据预处理,后者更适用于需要保持训练集参数以便后续应用到测试集的场景。

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

标准化(Z-Score),或者去除均值和方差缩放

公式为:(X-mean)/std  计算时对每个属性/每列分别进行。

将数据按期属性(按列进行)减去其均值,并处以其方差。得到的结果是,对于每个属性/每列来说所有数据都聚集在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_scaled = preprocessing.scale(X)
 
>>> X_scaled                                         
array([[ 0 .  ..., - 1.22 ...,  1.33 ...],
        [ 1.22 ...,  0 .  ..., - 0.26 ...],
        [- 1.22 ...,  1.22 ..., - 1.06 ...]])
 
>>>#处理后数据的均值和方差
>>> X_scaled.mean(axis= 0 )
array([ 0 .,  0 .,  0 .])
 
>>> X_scaled.std(axis= 0 )
array([ 1 .,  1 .,  1 .])

使用sklearn.preprocessing.StandardScaler类,使用该类的好处在于可以保存训练集中的参数(均值、方差)直接使用其对象转换测试集数据。

>>> scaler =  preprocessing.StandardScaler().fit(X)
>>> scaler
StandardScaler(copy = True , with_mean = True , with_std = True )
 
>>> scaler.mean_                                     
array([ 1.  ...,  0.  ...,  0.33 ...])
 
>>> scaler.std_                                      
array([ 0.81 ...,  0.81 ...,  1.24 ...])
 
>>> scaler.transform(X)                              
array([[ 0.   ..., - 1.22 ...,  1.33 ...],
        [ 1.22 ...,  0.   ..., - 0.26 ...],
        [ - 1.22 ...,  1.22 ..., - 1.06 ...]])
 
 
>>> #可以直接使用训练集对测试集数据进行转换
>>> scaler.transform([[ - 1. 1. , 0. ]])               
array([[ - 2.44 ...,  1.22 ..., - 0.26 ...]])

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值