sklearn.preprocessing.StandardScaler数据标准化

数据在前处理的时候,经常会涉及到数据标准化。将现有的数据通过某种关系,映射到某一空间内。常用的标准化方式是,减去平均值,然后通过标准差映射到均至为0的空间内。系统会记录每个输入参数的平均数和标准差,以便数据可以还原。

很多ML的算法要求训练的输入参数的平均值是0并且有相同阶数的方差例如:RBF核的SVM,L1和L2正则的线性回归

sklearn.preprocessing.StandardScaler能够轻松的实现上述功能。

调用方式为: 
首先定义一个对象: 
ss = sklearn.preprocessing.StandardScaler(copy=True, with_mean=True, with_std=True) 
在这里 
copywith_mean;with_std 
默认的值都是True.

copy 如果为false,就会用归一化的值替代原来的值;如果被标准化的数据不是np.array或scipy.sparse CSR matrix, 原来的数据还是被copy而不是被替代

with_mean 在处理sparse CSR或者 CSC matrices 一定要设置False不然会超内存

能够查询的属性:

scale_: 缩放比例,同时也是标准差

mean_: 每个特征的平均值

var_:每个特征的方差

n_sample_seen_:样本数量,可以通过patial_fit 增加

举个例子:

from sklearn.preprocessing import StandardScaler
import numpy as np
x=np.arange(10).reshape(5,2)
y=[1,0,0,0,1]
ss=StandardScaler()
ss.fit(x) # ss对象中的method下文会介绍
print(ss.n_samples_seen_ )
print(ss.mean_)
print(ss.var_)
print(ss.scale_)
x=ss.fit_transform(x)
print(x)

结果为 

[ 4. 5.] 
[ 8. 8.] 
[ 2.82842712 2.82842712] 
[[-1.41421356 -1.41421356] 
[-0.70710678 -0.70710678] 
[ 0. 0. ] 
[ 0.70710678 0.70710678] 
[ 1.41421356 1.41421356]]

转载至https://blog.csdn.net/weixin_39175124/article/details/79463993

能够被调用的Methods:

fit(X,y=None):计算输入数据各特征的平均值,标准差已经之后的缩放系数 
X 为array 或者 稀疏矩阵,[样本数量,样本特征数] 
y: 传入为了使得和Pipeline兼容

fit_transform(X,y=None,**fit_params): 通过fit_params调整数据X,y得到一个调整后的X 
X 为array:训练集 
y 为标签 
返回一个改变后的X

get_params(deep=True): 返回StandardScaler对象的设置参数,接上文

print(ss.get_params(deep=True))

输出: 
{‘with_mean’: True, ‘with_std’: True, ‘copy’: True}

inverse_transform(X,copy=None):顾名思义,就是按照缩放规律反向还原当前数据 
默认copy 为None, 是否copy X 
这个copy暂时没有试出区别

print(ss.inverse_transform(x,copy=True))

输出: 
[[ 0. 1.] 
[ 2. 3.] 
[ 4. 5.] 
[ 6. 7.] 
[ 8. 9.]]

partial_fit(X, y=None): 在线计算平均值和标准差。适合X作为连续的数据流输入。 
相关文献“Algorithms for computing the sample variance: Analysis and recommendations.” The American Statistician 37.3 (1983): 242-247:

transform(X, y=’deprecated’, copy=None):基于现有的对象规则,标准化新的参数

你可能感兴趣的:(sklearn,sklearn,StandardScaler)