首页 > 解决方案 > Scikit Learn 中的 MinMaxScaler 似乎返回的缩放值不属于“feature_range”参数指定的值范围

问题描述

这是来自官方的示例: http: //scikit-learn.org/stable/modules/generated/sklearn.preprocessing.MinMaxScaler.html

>>> from sklearn.preprocessing import MinMaxScaler
>>>
>>> data = [[-1, 2], [-0.5, 6], [0, 10], [1, 18]]
>>> scaler = MinMaxScaler()
>>> print(scaler.fit(data))
MinMaxScaler(copy=True, feature_range=(0, 1))
>>> 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. ]]

官方文档如下。

transform(X)[source] 根据 feature_range 缩放 X 的特征。

参数: X:类数组,形状 [n_samples, n_features]

将被转换的输入数据。

当参数的默认值为 时,为什么我会看到[[ 1.5 0. ]]输出?feature_range(0, 1)

标签: pythonscikit-learn

解决方案


考虑这样的变换操作:

import numpy as np
data = np.array(data)
f1 = data[:,0]
mn = f1.min()
mx = f1.max()
(f1- mn)/ (mx - mn)

注意:转换操作是根据您的初始数据构造的。一旦构造了转换操作,它将对您的辅助数据进行操作,并且不会再次对其进行重新缩放。您可能对参数 feature_range 有问题。在这种情况下,您应该知道在 minmaxtransform 之后它会重新调整数据。


推荐阅读