Sklearn之数据预处理——StandardScaler

StandardScaler原理

作用:去均值和方差归一化。且是针对每一个特征维度来做的,而不是针对样本。 

标准差标准化(standardScale)使得经过处理的数据符合标准正态分布,即均值为0,标准差为1,其转化函数为:

             

其中μ为所有样本数据的均值,σ为所有样本数据的标准差。

 使用sklearn提供的StandardScaler方法

from sklearn.preprocessing import StandardScaler # 标准化工具

import numpy as np


x_np = np.array([[1.5, -1., 2.],

[2., 0., 0.]])

scaler = StandardScaler()

x_train = scaler.fit_transform(x_np)

print('矩阵初值为:{}'.format(x_np))

print('该矩阵的均值为:{}\n 该矩阵的标准差为:{}'.format(scaler.mean_,np.sqrt(scaler.var_)))

print('标准差标准化的矩阵为:{}'.format(x_train))
矩阵初值为:[[ 1.5 -1. 2. ]

[ 2. 0. 0. ]]

该矩阵的均值为: [ 1.75 -0.5 1. ]

该矩阵的标准差为:[0.25 0.5 1. ]

标准差标准化的矩阵为:[[-1. -1. 1.]

[ 1. 1. -1.]]

有关StandardScaler的transform和fit_transform方法

StandardScaler类是一个用来讲数据进行归一化和标准化的类。
所谓归一化和标准化,即应用下列公式:

使得新的X数据集方差为1,均值为0

问题一:
StandardScaler类中transform和fit_transform方法有什么区别?

答:fit_transform方法是fit和transform的结合,fit_transform(X_train) 意思是找出X_train的和\sigma,并应用在X_train上。
这时对于X_test,我们就可以直接使用transform方法。因为此时StandardScaler已经保存了X_train的
\mu\sigma

问题二:
为什么可以用训练集的和\sigma 来transform 测试集的数据X_test?

答:“机器学习中有很多假设,这里假设了训练集的样本采样足够充分”。

参考资料:

Sklearn之数据预处理——StandardScaler_小白一直白-CSDN博客_standardscaler

有关StandardScaler的transform和fit_transform方法 - 简书 (jianshu.com)

猜你喜欢

转载自blog.csdn.net/weixin_48419914/article/details/121671548