Matplotlib报错x与y维度不匹配:GaussianHMM股票预测绘图问题
报错原因
这个错误的核心逻辑非常简单:plt.plot() 要求传入的横轴数据和纵轴数据的数量必须完全相等,一个x值对应一个y值才能画点连线。你现在的横轴数据predicted_dates只有100个日期,纵轴切片close_val[N+1:-246]取出来有449个收盘价,数量对不上所以触发报错。
解决步骤
- 首先确认两个变量的长度,你可以在Jupyter Notebook的空白单元格运行以下两行代码验证:
print("日期变量长度:", len(predicted_dates)) print("收盘价切片长度:", len(close_val[N+1:-246]))
运行后你会看到输出正好是100和449,和报错提示的维度一致。
- 根据你的需求二选一调整即可:
- 如果你要画的是100天预测结果对应的收盘价:直接把纵轴切片的长度改成和日期一致就行,比如你要取预测时段对应的100个收盘价,就改成
close_val[N+1:N+1+100],这样切出来刚好100个数据,和日期完全对齐。 - 如果你要画的是449天的全部历史数据:就去检查前面生成
predicted_dates的代码,为什么只生成了100个日期,把日期生成逻辑改成覆盖全部449天的对应日期即可。
这类场景的常见诱因
你做的是HMM股票预测,通常predicted_dates的长度等于你设置的预测天数,比如你代码里设置了预测未来100天,所以这个变量就只有100个值;而你切收盘价的时候范围选大了,把大量历史收盘价也包含了进来,才会出现数量不匹配的问题,优先按第一种情况调整即可。
内容的提问来源于stack exchange,提问作者CraigWesleySf
相关产品推荐
相关产品推荐

