minmax_scale#

sklearn.preprocessing.minmax_scale(X, feature_range=(0, 1), *, axis=0, copy=True)#

转换特征通过将每个特征缩放到给定范围。

该估计器单独缩放和转换每个特征,使其在训练集上的给定范围内,即在零和一之间。

转换公式如下(当 axis=0 时):

X_std = (X - X.min(axis=0)) / (X.max(axis=0) - X.min(axis=0))
X_scaled = X_std * (max - min) + min

其中 min, max = feature_range。

转换计算公式如下(当 axis=0 时):

X_scaled = scale * X + min - X.min(axis=0) * scale
其中 scale = (max - min) / (X.max(axis=0) - X.min(axis=0))

这种转换通常用作零均值、单位方差缩放的替代方法。

更多信息请参阅 用户指南

Added in version 0.17: minmax_scale 函数接口 到 MinMaxScaler

Parameters:
Xarray-like of shape (n_samples, n_features)

数据。

feature_rangetuple (min, max), default=(0, 1)

转换后数据的期望范围。

axis{0, 1}, default=0

用于缩放的轴。如果为 0,则独立缩放每个特征, 否则(如果为 1)缩放每个样本。

copybool, default=True

如果为 False,尝试避免复制并就地缩放。 这不能保证总是就地工作;例如,如果数据是 一个具有 int 数据类型的 numpy 数组,即使设置了 copy=False,也会返回一个副本。

Returns:
X_trndarray of shape (n_samples, n_features)

转换后的数据。

Warning

数据泄露风险 除非你知道自己在做什么,否则不要使用 minmax_scale 。一个常见的错误是在将其拆分为训练集和测试集之前对整个数据应用它。这会偏差模型评估,因为信息会从测试集泄露到训练集。 一般来说,我们建议在 Pipeline 中使用 MinMaxScaler 以防止大多数数据泄露风险: pipe = make_pipeline(MinMaxScaler(), LogisticRegression())

See also

MinMaxScaler

使用 Transformer API 执行缩放到给定范围(例如,作为预处理 Pipeline 的一部分)。

Notes

有关不同缩放器、转换器和规范化器的比较,请参见 比较不同缩放器对含有异常值的数据的影响

Examples

>>> from sklearn.preprocessing import minmax_scale
>>> X = [[-2, 1, 2], [-1, 0, 1]]
>>> minmax_scale(X, axis=0)  # 独立缩放每一列
array([[0., 1., 1.],
       [1., 0., 0.]])
>>> minmax_scale(X, axis=1)  # 独立缩放每一行
array([[0.  , 0.75, 1.  ],
       [0.  , 0.5 , 1.  ]])