MinMaxScaler#

class sklearn.preprocessing.MinMaxScaler(feature_range=(0, 1), *, copy=True, clip=False)[source]#

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

这个估计器单独地缩放和转换每个特征,使其在训练集上位于给定范围(例如,0 到 1)内。

变换公式为

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。

这种变换常被用作零均值、单位方差缩放的替代方案。

MinMaxScaler 不会减少异常值的影响,但会将其线性缩放到一个固定范围,其中出现的最大数据点对应于最大值,最小数据点对应于最小值。有关示例可视化,请参考比较 MinMaxScaler 与其他缩放器

更多信息请参阅用户指南

参数:
feature_range元组 (min, max), 默认=(0, 1)

转换后数据的期望范围。

copy布尔型, 默认=True

设置为 False 以执行原地行归一化并避免复制(如果输入已经是 numpy 数组)。

clip布尔型, 默认=False

设置为 True 可以将保留数据的转换值裁剪到提供的 feature range

在 0.24 版本中新增。

属性:
min_形状为 (n_features,) 的 ndarray

每个特征的最小值调整。等价于 min - X.min(axis=0) * self.scale_

scale_形状为 (n_features,) 的 ndarray

每个特征数据的相对缩放。等价于 (max - min) / (X.max(axis=0) - X.min(axis=0))

在 0.17 版本中新增: scale_ 属性。

data_min_形状为 (n_features,) 的 ndarray

数据中每个特征的最小值

在 0.17 版本中新增: data_min_

data_max_形状为 (n_features,) 的 ndarray

数据中每个特征的最大值

在 0.17 版本中新增: data_max_

data_range_形状为 (n_features,) 的 ndarray

数据中每个特征的范围 (data_max_ - data_min_)

在 0.17 版本中新增: data_range_

n_features_in_整型

拟合 期间看到的特征数量。

在 0.24 版本中新增。

n_samples_seen_整型

估计器处理的样本数量。在新的 fit 调用中会重置,但在 partial_fit 调用中会递增。

feature_names_in_形状为 (n_features_in_,) 的 ndarray

拟合 期间看到的特征名称。仅当 X 的所有特征名称均为字符串时才定义。

在 1.0 版本中新增。

另请参见

minmax_scale

没有估计器 API 的等效函数。

注意

NaN 被视为缺失值:在拟合时忽略,在转换时保留。

示例

>>> from sklearn.preprocessing import MinMaxScaler
>>> data = [[-1, 2], [-0.5, 6], [0, 10], [1, 18]]
>>> scaler = MinMaxScaler()
>>> print(scaler.fit(data))
MinMaxScaler()
>>> print(scaler.data_max_)
[ 1. 18.]
>>> print(scaler.transform(data))
[[0.   0.  ]
 [0.25 0.25]
 [0.5  0.5 ]
 [1.   1.  ]]
>>> print(scaler.transform([[2, 2]]))
[[1.5 0. ]]
fit(X, y=None)[source]#

计算用于后续缩放的最小值和最大值。

参数:
X形状为 (n_samples, n_features) 的类数组

用于计算每个特征的最小值和最大值的数据,这些值用于后续沿特征轴的缩放。

yNone

忽略。

返回:
self对象

拟合后的缩放器。

fit_transform(X, y=None, **fit_params)[source]#

拟合数据,然后进行转换。

使用可选参数 fit_params 将转换器拟合到 Xy,并返回 X 的转换版本。

参数:
X形状为 (n_samples, n_features) 的类数组

输入样本。

y形状为 (n_samples,) 或 (n_samples, n_outputs) 的类数组, 默认=None

目标值(无监督转换时为 None)。

**fit_params字典

额外的拟合参数。

返回:
X_new形状为 (n_samples, n_features_new) 的 ndarray 数组

转换后的数组。

get_feature_names_out(input_features=None)[source]#

获取转换的输出特征名称。

参数:
input_features字符串类数组或 None, 默认=None

输入特征。

  • 如果 input_featuresNone,则使用 feature_names_in_ 作为输入特征名称。如果 feature_names_in_ 未定义,则生成以下输入特征名称:["x0", "x1", ..., "x(n_features_in_ - 1)"]

  • 如果 input_features 是类数组,则如果 feature_names_in_ 已定义,input_features 必须与 feature_names_in_ 匹配。

返回:
feature_names_out字符串对象的 ndarray

与输入特征相同。

get_metadata_routing()[source]#

获取此对象的元数据路由。

请查看用户指南了解路由机制的工作原理。

返回:
routingMetadataRequest

封装路由信息的 MetadataRequest

get_params(deep=True)[source]#

获取此估计器的参数。

参数:
deep布尔型, 默认=True

如果为 True,将返回此估计器及其包含的作为估计器的子对象的参数。

返回:
params字典

参数名称及其对应的值。

inverse_transform(X)[source]#

根据 feature_range 撤销 X 的缩放。

参数:
X形状为 (n_samples, n_features) 的类数组

将要转换的输入数据。它不能是稀疏的。

返回:
X_original形状为 (n_samples, n_features) 的 ndarray

转换后的数据。

partial_fit(X, y=None)[source]#

在 X 上在线计算最小值和最大值,用于后续缩放。

所有的 X 都作为一个批次处理。这适用于因 n_samples 数量非常大而无法执行 fit,或者 X 从连续流中读取的情况。

参数:
X形状为 (n_samples, n_features) 的类数组

用于计算均值和标准差的数据,这些值用于后续沿特征轴的缩放。

yNone

忽略。

返回:
self对象

拟合后的缩放器。

set_output(*, transform=None)[source]#

设置输出容器。

请参阅介绍 set_output API以获取如何使用该 API 的示例。

参数:
transform{“default”, “pandas”, “polars”}, 默认=None

配置 transformfit_transform 的输出。

  • "default":转换器的默认输出格式

  • "pandas":DataFrame 输出

  • "polars":Polars 输出

  • None:转换配置不变

在 1.4 版本中新增: 新增了 "polars" 选项。

返回:
self估计器实例

估计器实例。

set_params(**params)[source]#

设置此估计器的参数。

该方法适用于简单的估计器以及嵌套对象(例如 Pipeline)。后者具有 <component>__<parameter> 形式的参数,因此可以更新嵌套对象的每个组件。

参数:
**params字典

估计器参数。

返回:
self估计器实例

估计器实例。

transform(X)[source]#

根据 feature_range 缩放 X 的特征。

参数:
X形状为 (n_samples, n_features) 的类数组

将要转换的输入数据。

返回:
Xt形状为 (n_samples, n_features) 的 ndarray

转换后的数据。