使用标准和最小最大缩放器使用 Sklearn 进行数据预处理
数据缩放是数值特征的数据预处理步骤。许多机器学习算法,如梯度下降法、KNN 算法、线性和逻辑回归等,都需要数据缩放才能产生良好的结果。为此定义了各种定标器。本文重点介绍标准定标器和最小-最大定标器。这里的任务是讨论它们的含义以及如何使用此包附带的内置函数来实现它们。
除了支持库函数之外,将用于实现该功能的其他函数是:
- fit(data)方法用于计算给定特征的均值和标准差,以便它可以进一步用于缩放。
- transform(data)方法用于使用使用 .fit() 方法计算的均值和标准差执行缩放。
- fit_transform()方法同时进行拟合和变换。
标准定标器
Standard Scaler 有助于获得标准化分布,均值为零,标准差为 1(单位方差)。它通过从特征中减去平均值然后将结果除以特征标准差来标准化特征。
标准比例计算如下:
z = (x - u) / s
在哪里,
- z 是缩放数据。
- x 是要缩放的数据。
- u 是训练样本的均值
- s 是训练样本的标准差。
Sklearn 预处理支持 StandardScaler() 方法,只需 2-3 步即可直接实现。
Syntax: class sklearn.preprocessing.StandardScaler(*, copy=True, with_mean=True, with_std=True)
Parameters:
- copy: If False, inplace scaling is done. If True , copy is created instead of inplace scaling.
- with_mean: If True, data is centered before scaling.
- with_std: If True, data is scaled to unit variance.
方法:
- 导入模块
- 创建数据
- 计算所需值
- 打印处理数据
例子:
Python3
# import module
from sklearn.preprocessing import StandardScaler
# create data
data = [[11, 2], [3, 7], [0, 10], [11, 8]]
# compute required values
scaler = StandardScaler()
model = scaler.fit(data)
scaled_data = model.transform(data)
# print scaled data
print(scaled_data)
Python3
# import module
from sklearn.preprocessing import MinMaxScaler
# create data
data = [[11, 2], [3, 7], [0, 10], [11, 8]]
# scale features
scaler = MinMaxScaler()
model=scaler.fit(data)
scaled_data=model.transform(data)
# print scaled features
print(scaled_data)
输出:
[[ 0.97596444 -1.61155897]
[-0.66776515 0.08481889]
[-1.28416374 1.10264561]
[ 0.97596444 0.42409446]]
最小最大缩放器
还有另一种数据缩放方式,其中特征的最小值等于 0,特征的最大值等于 1。 MinMax Scaler 在给定范围内缩小数据,通常为 0 到 1。它通过将特征缩放到给定范围来转换数据。它将值缩放到特定值范围而不改变原始分布的形状。
MinMax 缩放使用以下方法完成:
x_std = (x – x.min(axis=0)) / (x.max(axis=0) – x.min(axis=0))
x_scaled = x_std * (max – min) + min
在哪里,
- 最小值,最大值 = 特征范围
- x.min(axis=0) : 最小特征值
- x.max(axis=0):最大特征值
Sklearn 预处理定义了 MinMaxScaler() 方法来实现这一点。
Syntax: class sklearn.preprocessing.MinMaxScaler(feature_range=0, 1, *, copy=True, clip=False)
Parameters:
- feature_range: Desired range of scaled data. The default range for the feature returned by MinMaxScaler is 0 to 1. The range is provided in tuple form as (min,max).
- copy: If False, inplace scaling is done. If True , copy is created instead of inplace scaling.
- clip: If True, scaled data is clipped to provided feature range.
方法:
- 导入模块
- 创建数据
- 比例数据
- 打印缩放数据
例子:
蟒蛇3
# import module
from sklearn.preprocessing import MinMaxScaler
# create data
data = [[11, 2], [3, 7], [0, 10], [11, 8]]
# scale features
scaler = MinMaxScaler()
model=scaler.fit(data)
scaled_data=model.transform(data)
# print scaled features
print(scaled_data)
输出:
[[1. 0. ]
[0.27272727 0.625 ]
[0. 1. ]
[1. 0.75 ]]