thinkpading 2019-10-10 23:13 采纳率: 0%
浏览 1132

《Python数据分析与数据化运营》书中绘制预测图时无法通过

参考《Python数据分析与数据化运营》这本书籍的“案例-基于自动PDQ值的ARIMA时间序列预测应用”,使用自己的数据。
运行时,使用statsmodels.tsa.arima_model import ARMA进行时间序列分析,完成建模和预测之后,打算把数据画在一个图形中,x轴为日期。但报错了。
其中,预测部分定义了一个函数:

# 预测未来指定时间项的数据
def predict_data(model_arma, ts, log_n, start, end, rule1=True, rule2=True):
    '''
    :param model_arma: 最优ARMA模型对象
    :param ts: 时间序列数据,Series类型
    :param log_n: 平稳性处理的log的次数,int型
    :param start: 要预测数据的开始时间索引
    :param end: 要预测数据的结束时间索引
    :param rule1: rule1规则布尔值,布尔型
    :param rule2: rule2规则布尔值,布尔型
    :return: 无
    '''
    predict_ts = model_arma.predict(start=start, end=end)  # 预测未来指定时间项的数据
    print ('-----------predict data----------')  # 打印标题
    if not (rule1 and rule2):  # 如果两个条件有任意一个不满足
        predict_ts = recover_log(predict_ts, log_n)  # 还原数据
    print (predict_ts)  # 展示预测数据
    # 展示预测趋势
    plt.figure()  # 创建画布
    ts.plot(label='raw time series')  # 设置推向标签
    predict_ts.plot(label='predicted data', style='--')  # 以虚线展示预测数据
    plt.legend(loc='best')  # 设置图例位置
    plt.title('predicted time series')  # 设置标题
    plt.show()  # 展示图像

程序运行到该函数时报错了,如下:
报错信息:

ValueError: view limit minimum -36866.1 is less than 1 and is an invalid Matplotlib date value. This often happens if you pass a non-datetime value to an axis that has datetime units

Error in callback <function install_repl_displayhook.<locals>.post_execute at 0x0000000008D29840> (for post_execute):
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)

经分析,问题出在画图部分:当ts.plot()画完原始时间序列ts后,再用predict_ts.plot()画图时,系统就报错了。
这里ts、predict_ts的时间轴均为date日期格式数据,predict_ts源自:

predict_ts = model_arma.predict(start=start, end=end)
print (predict_ts)
2019-09-16    9.720805
2019-09-17    9.761446
2019-09-18    9.793089
2019-09-19    9.817726
2019-09-20    9.836908

ts的时间终点为2019-09-15,按照书上说明,这里是可以直接接在后边继续画出预测数据的。但自己在运行时不行,请教。

  • 写回答

1条回答 默认 最新

  • zqbnqsdsmd 2019-10-11 12:37
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记