首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ValueError与MinMaxScaler inverse_transform

ValueError与MinMaxScaler inverse_transform
EN

Stack Overflow用户
提问于 2022-03-20 07:25:54
回答 1查看 115关注 0票数 0

我正在尝试将LSTM网络安装到数据集中。

我有以下数据集:

代码语言:javascript
复制
0      17.6  1.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  ...  0.0  0.0  0.0   
1      38.2  0.0  1.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  ...  0.0  0.0  0.0   
2      39.4  0.0  0.0  1.0  0.0  0.0  0.0  0.0  0.0  0.0  ...  0.0  0.0  0.0   
3      38.7  0.0  0.0  0.0  1.0  0.0  0.0  0.0  0.0  0.0  ...  0.0  0.0  0.0   
4      39.7  0.0  0.0  0.0  0.0  1.0  0.0  0.0  0.0  0.0  ...  0.0  0.0  0.0   
...     ...  ...  ...  ...  ...  ...  ...  ...  ...  ...  ...  ...  ...  ...   
17539  56.9  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  ...  0.0  0.0  0.0   
17540  51.1  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  ...  0.0  0.0  0.0   
17541  46.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  ...  0.0  0.0  0.0   
17542  44.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  ...  0.0  0.0  0.0   
17543  40.2  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  ...  1.0  0.0  0.0   

        27   28   29   30   31   32   33  
0      0.0  0.0  1.0  0.0  0.0  1.0  0.0  
1      0.0  0.0  1.0  0.0  0.0  1.0  0.0  
2      0.0  0.0  1.0  0.0  0.0  1.0  0.0  
3      0.0  0.0  1.0  0.0  0.0  1.0  0.0  
4      0.0  0.0  1.0  0.0  0.0  1.0  0.0  
...    ...  ...  ...  ...  ...  ...  ...  
17539  0.0  0.0  0.0  0.0  1.0  0.0  1.0  
17540  0.0  0.0  0.0  0.0  1.0  0.0  1.0  
17541  0.0  0.0  0.0  0.0  1.0  0.0  1.0  
17542  0.0  0.0  0.0  0.0  1.0  0.0  1.0  
17543  0.0  0.0  0.0  0.0  1.0  0.0  1.0

形状:

[17544 rows x 34 columns]

然后我用MinMaxScaler进行缩放,如下所示:

代码语言:javascript
复制
scaler = MinMaxScaler(feature_range=(0,1))
data = scaler.fit_transform(data)

然后,我使用一个函数来创建我的列车,用形状测试数据集:

代码语言:javascript
复制
X_train :  (12232, 24, 34)
Y_train :  (12232, 24)

X_test :  (1708, 24, 34)
Y_test :  (1708, 24)

在拟合模型并预测测试集的值之后,我需要缩小到原始值,并执行以下操作:

代码语言:javascript
复制
test_predict  = model.predict(X_test)
test_predict  = scaler.inverse_transform(test_predict)
Y_test = scaler.inverse_transform(Y_test)

但我得到了以下错误:

代码语言:javascript
复制
ValueError: operands could not be broadcast together with shapes (1708,24) (34,) (1708,24) 

我该怎么解决呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-20 09:29:22

反变换要求数据形状与变换后产生的数据相同,即34列。test_predict不是这样,y_test也不是这样。

此外,虽然与您的错误无关,但是您正在犯一个错误,即先进行缩放,然后再分割以进行培训/测试,这不是正确的方法,因为它会导致数据泄漏。

以下是解决这一问题的必要步骤:

  1. Split首先训练和测试集合
  2. 使用两个不同的标度来转换X_trainy_train,如我在this answer of mine中所示;您应该使用.fit_transform在这里使用H 212H 113将您的模型与转换后的X_trainy_train (附带注意:对于不同版本的数据使用不同的名称,而不是覆盖现有的数据)。H 216H 117使用测试数据和评估您的模型,首先从#2步骤中转换它们;您应该在这里使用.transform (而不是再次使用.fit_transform )。为了使您的预测恢复到原来的y_test的规模,您应该在它们上使用各自标量器的.inverse_transform。当然,不需要逆变换您转换的X_test和y_test --您已经有了这些值!
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71544858

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档