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

ARMA模型预测图表与训练测试数据坐标轴不匹配问题求助

问题排查与解决方案

你的图表坐标轴偏移的核心原因是预测结果的绘图逻辑错误,同时存在几个细节问题导致显示异常,以下是具体修正步骤:


1. 修正预测结果的绘图逻辑

当前代码中这一行存在严重逻辑错误:

plt.plot(y_pred_out, test['visit_count'], color='green', label = 'Predictions')

这行代码错误地将y_pred_out(带日期索引的预测值序列)当作X轴,把test['visit_count'](测试集真实值)当作Y轴绘制,直接导致坐标轴错位。

正确做法是直接绘制y_pred_out——它的索引已经和测试集日期对齐,无需额外传入X轴数据:

plt.plot(y_pred_out, color='green', label = 'Predictions')

2. 调整图例显示位置

你把plt.legend()放在了plt.show()之后,此时绘图窗口已关闭,图例无法显示。需将其移到plt.show()之前:

plt.ylabel('Number of Class')
plt.xlabel('date')
plt.xticks(rotation=45)
plt.title("Train/Test split for Class Data")
plt.legend()  # 移至show之前
plt.show()

3. 验证日期索引一致性

确保训练集、测试集和预测结果的日期索引为统一的datetime类型,避免因类型不一致导致轴对齐问题。可在拆分数据集后添加验证代码:

# 检查索引类型
print("训练集索引类型:", train.index.dtype)
print("测试集索引类型:", test.index.dtype)
print("预测结果索引类型:", y_pred_out.index.dtype)

# 若存在日期缺失(如示例中2021-09-03无数据),建议补全缺失日期:
# idx = pd.date_range(start=data3.index.min(), end=data3.index.max(), freq='D')
# data3 = data3.reindex(idx, fill_value=0)

修正后的完整绘图代码

train = data3[data3.index < pd.to_datetime("2022-11-01", format='%Y-%m-%d')]
test = data3[data3.index > pd.to_datetime("2022-11-01", format='%Y-%m-%d')]
y = train['visit_count']

ARMAmodel = SARIMAX(y, order = (1, 0, 1))
ARMAmodel = ARMAmodel.fit()

y_pred = ARMAmodel.get_forecast(len(test.index))
y_pred_df = y_pred.conf_int(alpha = 0.05)
y_pred_df["Predictions"] = ARMAmodel.predict(start = y_pred_df.index[0], end = y_pred_df.index[-1])
y_pred_df.index = test.index
y_pred_out = y_pred_df["Predictions"]

# 修正后的绘图逻辑
plt.plot(train['visit_count'], color='black', label='Train')
plt.plot(test['visit_count'], color='red', label='Test')
plt.plot(y_pred_out, color='green', label='Predictions')
plt.ylabel('Number of Class')
plt.xlabel('date')
plt.xticks(rotation=45)
plt.title("Train/Test split for Class Data")
plt.legend()
plt.show()

额外注意点

  • 数据预处理代码中存在未定义变量visit_date1,需确保它是从原始数据的date列提取的,例如:visit_date1 = data['date'],否则预处理会报错。
  • 若时间序列存在日期缺失,SARIMAX会按连续时间步长处理,而原始数据索引是离散的,这也可能引发轴对齐问题,建议补全缺失日期后再建模。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 20:00:17