函数原型
sklearn.preprocessing.StandardScaler(*, copy=True, with_mean=True, with_std=True)
函数说明
StandardScaler函数用于标准化数据,使数据每一个特征的均值为0,方差为1。也就是说,该函数用于使数据的分布变成标准正态分布。转换函数为:
x
∗
=
x
−
μ
σ
x^*=\dfrac{x-\mu}{\sigma}
x
∗
=
σ
x
−
μ
。注意,这里只是针对每一个特征维度来做的,而不是针对整个样本。结果返回一个StandardScaler对象。该对象有以下几个常用的方法:
1、fit(X, y=None, sample_weight=None)
:计算输入数据的样本均值、方差。
2、transform(X, copy=None)
:根据fit函数计算得到的样本均值、方差,使用转换函数来归一化样本数据,使符合正态分布。
3、fit_transform(X, y=None, *fit_params)
:相当于依次调用fit函数、transform函数。返回经过转换函数转换后的数据。
比如:
>>> x = np.array([[1, 2, 3],[4, 5, 6]])
>>> x
array([[1, 2, 3],
[4, 5, 6]])
# 计算每一个特征的均值
>>> means = np.mean(x, axis=0)
>>> means
array([2.5, 3.5, 4.5])
# 计算每一个特征的方差
>>> std = np.std(x, axis=0)
>>> std
array([1.5, 1.5, 1.5])
# 使用转换函数转换样本数据,使每一个特征的均值为0,方差为1
>>> y = (x - means) / std
>>> y
array([[-1., -1., -1.],
[ 1., 1., 1.]])
# 使用fit、transform函数来依次计算
>>> scaler = preprocessing.StandardScaler()
>>> y1 = scaler.fit(y)
>>> y2 = scaler.transform(y)
>>> y2
array([[-1., -1., -1.],
[ 1., 1., 1.]])
# 直接使用fit_transform函数计算
>>> y = preprocessing.StandardScaler().fit_transform(y)
>>> y
array([[-1., -1., -1.],
[ 1., 1., 1.]])