Python LSTM绘制实际值与预测值时出现维度不匹配ValueError如何解决
报错原因
plt.plot(x, y)要求x和y的第一个维度长度完全相等,你定义的x轴aa长度为14,但你传入的两个y值长度都和14不匹配:Y_test[0][:200]最多取200个值,长度远大于14test_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
相关产品推荐
相关产品推荐

