python - 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)
解决方案
考虑这样的变换操作:
import numpy as np
data = np.array(data)
f1 = data[:,0]
mn = f1.min()
mx = f1.max()
(f1- mn)/ (mx - mn)
注意:转换操作是根据您的初始数据构造的。一旦构造了转换操作,它将对您的辅助数据进行操作,并且不会再次对其进行重新缩放。您可能对参数 feature_range 有问题。在这种情况下,您应该知道在 minmaxtransform 之后它会重新调整数据。
推荐阅读
- tensorflow - 带有 TensorFlow 2.1 的 Cloud TPU v3 Pod 的 TPUClusterResolver 出错
- sockets - 如何在数据链路层(以太网)监听并在传输层响应
- virtualenv - 尝试在 Windows 10 上使用 cmd 设置虚拟环境时出现此错误
- python - 将包含名字和姓氏列表的两列合并为一个包含全名列表的列
- c++ - c++中从double到string的转换
- python - Numpy:基于列中的匹配连接/扩展二维数组。如何消除for循环?
- python - 无法使用 Pytorch 从谷歌 AI 平台获取预测
- ios - 无法为 iOS xCode 项目安装 Firebase
- go - 谷歌云函数默认环境变量未设置
- c# - 创建实体时的表名(包含/正则表达式) - 实体框架 - 表前缀