python - MinMaxScaler 用于 fit 和 inverse_transform 中的不同形状
问题描述
我正在使用MinMaxScaler
fromsklearn
将输入缩放为介于两者之间的值0
,1
然后处理数据以获得另一个向量。我使用inverse_transform
获得的向量来取回原始范围内的值。输入的形状和输入的形状fit_transform
是inverse_transform
不同的。作为 MWE,我提供了以下代码。
import numpy as np
from sklearn.preprocessing import MinMaxScaler
sc = MinMaxScaler(feature_range=(0, 1))
a = np.random.randint(0, 10, (10, 5))
b = sc.fit_transform(a) # b values are in [0, 1] range
c = np.random.rand(10, 30) # as an example, I have generated values between 0 and 1
d = sc.inverse_transform(c)
我遇到了错误
ValueError:操作数无法与形状一起广播 (10,30) (5,) (10,30)
我知道这是因为形状不匹配。但是我的实际代码中输入的形状是固定的,不能改变(而且彼此也不同)。我怎样才能让它工作?任何帮助表示赞赏。
解决方案
您正在使用的内容为您作为输入提供的 5 个列向量中的每一个学习不同的变换。我猜您可能想学习固定变换。我想你可以通过向量化矩阵来实现它。我建议以下
mean = a.mean()
std = a.std()
# Transform
b = (a - mean) / std
# Inverse transform
c = np.random.rand(10, 30)
d = c * std + mean
推荐阅读
- java - 如何使用 Spring 实现 Post API JSON?
- opentap-proj - 在表“testrun2attachment”上插入或更新违反了外键约束“testrun2attachment_runid_fkey”
- django - Django migrate 抛出 AttributeError: 'str' object has no attribute '_meta'
- python - 缓存/记忆异步上下文管理器
- r - 如何根据时间数据选择案例?
- javascript - 如何使用 javascript 更改 css 类选择器
- ios - DispatchQueue.main.async 如何存储它的块
- arrays - 将具有相同值的 JSON 组合到 JSON 数组中 - Scala
- docker - 来自 Jenkins Pipeline 的挂载卷不起作用
- linux - 如何同时重命名多个文件扩展名?