1.MaxAbsScaler:归一化到 [ -1 , 1 ]
将每个特征按其最大绝对值进行缩放。该估计器对每个特征进行缩放和单独转换,使训练集中每个特征的最大绝对值为1.0。它不转移/中心数据,因此不破坏任何稀疏性。这个标量也可以应用于稀疏的CSR或CSC矩阵。
使用示例:
>>> from sklearn.preprocessing import MaxAbsScaler
>>> X = [[ 1., -1., 2.],
... [ 2., 0., 0.],
... [ 0., 1., -1.]]
>>> transformer = MaxAbsScaler().fit(X)
>>> transformer
MaxAbsScaler()
>>> transformer.transform(X)
array([[ 0.5, -1. , 1. ],
[ 1. , 0. , 0. ],
[ 0. , 1. , -0.5]])
Methods:
- fit(self, X[, y]): 计算用于以后缩放的最大绝对值。
- fit_transform(self, X[, y]): 填充数据,然后转换它。
- get_params(self[, deep]): 获取此估计器的参数。
- inverse_transform(self, X): 将数据缩减到原始表示(即反归一化)
- partial_fit(self, X[, y]): 在线计算X的最大绝对值,方便以后缩放。
- set_params(self, **params): 设置此估计器的参数。
- transform(self, X): Scale the data
2.Z-score
通过计算训练集中样本的相关统计量,对每个特征分别进行定心和定标。然后存储均值和标准差,通过变换后的数据进行定心和定标。
数据集的标准化是许多机器学习估计器的一个常见需求:如果单个特征或多或少不像标准的正态分布数据(例如均值和单位方差为0的高斯分布),它们可能会表现得很糟糕。
主要作用: 使变量减去它的均值。其实就是一个平移的过程,平移后所有数据的中心是(0,0)。对于每个属性/每列来说所有数据都聚集在0附近,方差为1。
实现时有两种方法:
- 使用sklearn.preprocessing.scale()函数,可以直接将给定数据进行标准化。
import numpy as np
from sklearn.preprocessing import scale
X = np.array([[ 1., -1., 2.],
[ 2., 0., 0.],
[ 0., 1., -1.]])
X_scaled = scale(X)
print X_scaled
#[[ 0. -1.22474487 1.33630621]
# [ 1.22474487 0. -0.26726124]
# [-1.22474487 1.22474487 -1.06904497]]
print X_scaled.mean(axis = 0)
#[ 0. 0. 0.]
print X_scaled.std(axis = 0)
#[ 1. 1. 1.]
- 使用sklearn.preprocessing.StandardScaler类,使用该类的好处在于可以保存训练集中的参数(均值、方差)直接使用其对象转换测试集数据。
>>> from sklearn.preprocessing import StandardScaler
>>> data = [[0, 0], [0, 0], [1, 1], [1, 1]]
>>> scaler = StandardScaler()
>>> print(scaler.fit(data))
StandardScaler()
>>> print(scaler.mean_)
[0.5 0.5]
>>> print(scaler.transform(data))
[[-1. -1.]
[-1. -1.]
[ 1. 1.]
[ 1. 1.]]
>>> print(scaler.transform([[2, 2]]))
[[3. 3.]]
对于 StandardScaler类有
Methods
- fit(self, X[, y]): 计算平均值和std以供以后缩放使用。
- fit_transform(self, X[, y]): 填充数据,然后转换它。
- get_params(self[, deep]): 获取此估计器的参数。
- inverse_transform(self, X): 将数据缩减到原始表示(即反归一化)
- partial_fit(self, X[, y]): 在线计算X上的平均值和std,以便以后缩放。
- set_params(self, **params): 设置此估计器的参数。
- transform(self, X): 通过定心和定标来实现标准化
未完待续
参考链接:
sklearn官网
hudongni1博客