You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python LSTM绘制实际值与预测值时出现维度不匹配ValueError如何解决

报错原因

  • plt.plot(x, y)要求x和y的第一个维度长度完全相等,你定义的x轴aa长度为14,但你传入的两个y值长度都和14不匹配:
    • Y_test[0][:200]最多取200个值,长度远大于14
    • test_predict[:,0][:152]最多取152个值,长度也与14不符
  • 报错提示的(1, 2)形状说明你提取的Y值存在多余的未降维维度。

修复方案

第一步:核心逻辑调整

先对y值做降维处理,再统一x轴和两个y序列的长度即可。你可以固定展示长度,也可以自动对齐到两个序列的最短长度。

第二步:修改后代码示例

版本1:固定展示前N个样本(比如前14个)

sample_len = 14 # 需要展示更长序列时直接修改这个值即可,x轴会自动对应生成
aa = [x for x in range(sample_len)]

plt.figure(figsize=(8,4))
# flatten()用于压平多余维度,再取对应长度的切片
plt.plot(aa, Y_test[0].flatten()[:sample_len], marker='.', label="actual")
plt.plot(aa, test_predict[:,0].flatten()[:sample_len], 'r', label="prediction")

# 原有可视化逻辑保持不变
plt.tight_layout()
sns.despine(top=True)
plt.subplots_adjust(left=0.07)
plt.ylabel('Global_active_power', size=15)
plt.xlabel('Time step', size=15)
plt.legend(fontsize=15)
plt.show()

版本2:自动对齐展示所有有效样本

# 先降维提取两个序列
actual_data = Y_test[0].flatten()
predict_data = test_predict[:,0].flatten()
# 自动取最短长度避免维度不匹配
sample_len = min(len(actual_data), len(predict_data))
aa = [x for x in range(sample_len)]

plt.figure(figsize=(8,4))
plt.plot(aa, actual_data[:sample_len], marker='.', label="actual")
plt.plot(aa, predict_data[:sample_len], 'r', label="prediction")

# 原有可视化逻辑保持不变
plt.tight_layout()
sns.despine(top=True)
plt.subplots_adjust(left=0.07)
plt.ylabel('Global_active_power', size=15)
plt.xlabel('Time step', size=15)
plt.legend(fontsize=15)
plt.show()

内容的提问来源于stack exchange,提问作者westiegirl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 11:15:08