1 api介绍
StandardScaler是通过去均值和缩放到方差单位来标准化特征(Standardize features by removing the mean and scaling to unit variance)
其方法如下:
z
=
x
−
μ
s
\large z = \frac{x-\mu}{s}
z=sx−μ
其中
μ
\mu
μ为均值,s为方差.
1.1 StandardScaler()
class sklearn.preprocessing.StandardScaler(copy=True, with_mean=True, with_std=True)
- with_mean: 如果均值为0,则with_mean = False
- with_std: 如果方差为1,则with_std = False
- **copy:**为false则不返回副本
1.2 属性(Attributes)
- scale_: ndarray或者None,是每个特征的相对缩放比例,根据np.sqrt(var_)计算,with_std=False时为None
- mean_: ndarray或者None,每个特征的平均值,with_mean=False时为None
- var_: ndarray或者None,每个特征的方差,用于计算scale_,with_std=False时为None
- n_samples_seen: int或者array,解释没太看懂,目测为每个特征中数据的数量
1.3 方法(method)
- fit( self , X , y = None ): 计算用来进行缩放的平均值和标准差。X是用于计算平均值和标准差的数据,y可忽略(官方文档这么写的,我还没有看源码),没有返回值
- fit_transform( slef , X , y = None , **fit_params ): 先fit()得到缩放所需的参数,然后对数据进行缩放。 X是训练集(array类型),y是目标值(array类型),fit_params是拟合参数(dic类型)。返回值: X_new(array类型),转化后的特征
- get_params(self , deep = True): 如果deep为True获取此评估器(estimators)的参数(params),**返回值:**参数名称到对应值的映射。
- inverse_transform(self, X, copy = None): 按照比例,将数据复原。
- partial_fit(self, X, y = None): 将X按每一个分量来计算平均值和标准差
- set_params(self, **params): 设置评估器的参数
- transform(self, X, copy=None): 执行缩放。
1.3.1 fit_transform()和transform()的区别
fit_transform()执行共有两步:
- 第一步执行fit(),得到执行缩放的参数。
- 第二部执行缩放。
transform仅执行缩放,通常标准化数据时,如果已经执行过fit()或者fit_transform(),则可以直接执行transform()。
2 实例
import numpy as np
from sklearn.preprocessing import StandardScaler
data = [[0,0],[1,1],[2,2]]
data2 = [[1,1],[2,2],[1,1]]
scaler = StandardScaler()
print(scaler)
# StandardScaler(copy=True, with_mean=True, with_std=True)
scaler.fit(data)
# 获取参数
print(scaler.mean_)
# [1. 1.]
print(scaler.scale_)
# [0.81649658 0.81649658]
print(scaler.var_)
# [0.66666667 0.66666667]
print(scaler.n_samples_seen_)
# 3
data_scaled = scaler.transform(data)
# 因为已经fit(),所以可以执行transform(),否则会报错。
# 若未执行fit(),可选择scaler.fit_transform(data)。
print(data_scaled)
# [[-1.22474487 -1.22474487]
# [ 0. 0. ]
# [ 1.22474487 1.22474487]]