gpt4 book ai didi

python - 新版本的 MinMaxScaler 不再接受最大值和最小值的范围

转载 作者:行者123 更新时间:2023-11-30 09:03:38 28 4
gpt4 key购买 nike

在 sklearn 的 MinMaxScaler 的早期版本中,人们可以指定缩放器对数据进行标准化的最小值和最大值。换句话说,以下情况是可能的:

from sklearn import preprocessing
import numpy as np
x_data = np.array([[66,74,89], [1,44,53], [85,86,33], [30,23,80]])
scaler = preprocessing.MinMaxScaler()
scaler.fit ([-90, 90])
b = scaler.transform(x_data)

这将导致上面的数组缩放到 (0,1) 范围,最小可能值 -90 变为 0,最大可能值 90 变为 1,并且中间的所有值都被缩放因此。对于 sklearn 0.21 版本,这会引发错误:

ValueError: Expected 2D array, got 1D array instead:
array=[-90. 90.].
Reshape your data either using array.reshape(-1, 1) if your data has a single feature or array.reshape(1, -1) if it contains a single sample.

我将 scaler.fit ([-90, 90]) 改为 scaler.fit ([[-90, 90]]),但后来我得到了:

ValueError: operands could not be broadcast together with shapes (4,3) (2,) (4,3)

我知道我可以做 scaler.fit (x_data),但这会导致转换后出现以下结果:

 [0.         0.33333333 0.35714286]
[1. 1. 0. ]
[0.3452381 0. 0.83928571]]

我的问题有两个:1)数字似乎不正确。它们应该在 0 和 1 之间缩放,但我得到了许多 0 和许多 1 分别表示应该更高和更低的值。2)如果我想基于固定范围(例如(-90.90))将每个 future 数组缩放到(0,1)范围,该怎么办?这是一个方便的功能,但现在我必须使用特定的数组来进行缩放。更重要的是,每次缩放都会产生不同的结果,因为我必须重新适应每个 future 的数组,从而收到可变的结果。

我在这里遗漏了什么吗?有没有办法保留这个漂亮的功能?如果没有,我如何确保我的数据每次都正确且一致地缩放?

最佳答案

看来问题不在scikit-learn处包版本,但采用 fit() 输入数据的形式方法MinMaxScaler对象:

import numpy as np
import sklearn
from sklearn.preprocessing import MinMaxScaler

print('scikit-learn package version: {}'.format(sklearn.__version__))
# scikit-learn package version: 0.21.3

scaler = MinMaxScaler()
x_sample = [-90, 90]
scaler.fit(np.array(x_sample)[:, np.newaxis]) # reshape data to satisfy fit() method requirements
x_data = np.array([[66,74,89], [1,44,53], [85,86,33], [30,23,80]])

print(scaler.transform(x_data))

# [[0.86666667 0.91111111 0.99444444]
# [0.50555556 0.74444444 0.79444444]
# [0.97222222 0.97777778 0.68333333]
# [0.66666667 0.62777778 0.94444444]]

了解此类流行预处理器的输入数据要求,如 StandardScaler , MinMaxScaler等等你可以看我的answer另一个问题 StandardScaler.fit()输入。

关于python - 新版本的 MinMaxScaler 不再接受最大值和最小值的范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58579637/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com