python的时间序列预测,用python中的时间序列预测
要检查样本组中的ARMA模型:
import pandas as pd
from pandas.tseries.offsets import *
import numpy as np
import matplotlib.pyplot as plt
import statsmodels.api as sm
csv_file = '/home/Jian/Downloads/analyse vtr.csv'
df = pd.read_csv(csv_file, index_col=[0], sep='\t')
grouped = df.groupby('adserver_id')
group = list(grouped)[0][1]
ts_data = pd.TimeSeries(group.c_start.values, index=pd.to_datetime(group.day))
# positive-valued process, looks non-stationary
# simple way is to do a log transform
fig, axes = plt.subplots(figsize=(10,8), nrows=3)
ts_data.plot(ax=axes[0])
ts_log_data = np.log(ts_data)
ts_log_data.plot(ax=axes[1], style='b-', label='actual')
# in-sample fit
# ===================================
model = sm.tsa.ARMA(ts_log_data, order=(1,1)).fit()
print(model.params)
y_pred = model.predict(ts_log_data.index[0].isoformat(), ts_log_data.index[-1].isoformat())
y_pred.plot(ax=axes[1], style='r--', label='in-sample fit')
y_resid = model.resid
y_resid.plot(ax=axes[2])
# out-sample predict
# ===================================
start_date = ts_log_data.index[-1] + Day(1)
end_date = ts_log_data.index[-1] + Day(7)
y_forecast = model.predict(start_date.isoformat(), end_date.isoformat())
print(y_forecast)
2015-07-11 7.5526
2015-07-12 7.4584
2015-07-13 7.3830
2015-07-14 7.3224
2015-07-15 7.2739
2015-07-16 7.2349
2015-07-17 7.2037
Freq: D, dtype: float64
# NOTE: this step introduces bias, it is used here just for simplicity
# E[exp(x)] != exp[E[x]]
print(np.exp(y_forecast))
2015-07-11 1905.6328
2015-07-12 1734.4442
2015-07-13 1608.3362
2015-07-14 1513.8595
2015-07-15 1442.1183
2015-07-16 1387.0486
2015-07-17 1344.4080
Freq: D, dtype: float64
为每个子组运行ARMA模型(非常耗时):
import pandas as pd
from pandas.tseries.offsets import *
import numpy as np
import matplotlib.pyplot as plt
import statsmodels.api as sm
csv_file = '/home/Jian/Downloads/analyse vtr.csv'
df = pd.read_csv(csv_file, index_col=[0], sep='\t')
grouped = df.groupby('adserver_id')
def forecast_func(group):
ts_log_data = np.log(pd.TimeSeries(group.c_start.values, index=pd.to_datetime(group.day)))
# for some group, it raise convergence issue
try:
model = sm.tsa.ARMA(ts_log_data, order=(1,1)).fit()
start_date = ts_log_data.index[-1] + Day(1)
end_date = ts_log_data.index[-1] + Day(7)
y_forecast = model.predict(start_date.isoformat(), end_date.isoformat())
return pd.Series(np.exp(y_forecast).values, np.arange(1, 8))
except Exception:
pass
result = df.groupby('adserver_id').apply(forecast_func)
替代模型:为了快速计算,考虑指数平滑;此外,我看到数据看起来像一个具有时变Possion分布的正值过程,可能会考虑使用pymc模块的状态空间模型.
python的时间序列预测,用python中的时间序列预测相关推荐
- ML之分类预测:机器学习中多分类预测数据集可视化(不同类别赋予不同颜色)设计思路及代码实现
ML之分类预测:机器学习中多分类预测数据集可视化(不同类别赋予不同颜色)设计思路及代码实现 目录 机器学习中多分类预测数据集可视化(不同类别赋予不同颜色)设计思路及代码实现 代码实现
- python预测发展趋势_Python中的趋势“预测器”?
对于预测时间序列数据,我觉得最好的选择是LSTM,它是一种递归神经网络,非常适合于时间序列回归.在 如果您不想深入研究神经网络的后端,我建议您使用Keras库,它是Tensorflow框架的包装器.在 ...
- 预测类问题中的时间序列预测模型
前言:时间序列预测模型适用于含有时间变量的模型预测,对中短期的预测有着较好的结果,对长期预测不适用.本文重点介绍ARIMA模型的原理及代码实现. 其他模型总结:[Python]Python中的经典时 ...
- python短期预测图_Python中利用长短期记忆模型LSTM进行时间序列预测分析
原文链接:http://tecdat.cn/?p=6663 此示例中,神经网络用于使用2011年4月至2013年2月期间的数据预测都柏林市议会公民办公室的能源消耗. 每日数据是通过总计每天提供的15分 ...
- python 分类变量xgboost_如何用XGBoost做时间序列预测?
作者:Jason Brownlee翻译:wwl校对:王雨桐本文约3300字,建议阅读10分钟本文介绍了如何用XGBoost做时间序列预测,包括将时间序列转化为有监督学习的预测问题,使用前向验证来做模型 ...
- 【Python】时间序列数据分析与预测之Python工具汇总
本文中总结了十多种时间序列数据分析和预测工具和python库,在我们处理时间序列项目时,可以翻开本文,根据需要选择合适的工具,将会事半功倍! 在处理时间序列项目时,数据科学家或 ML 工程师通常会使用 ...
- 时间序列数据分析与预测之Python工具汇总
大家好,我是辰哥 本文中硬核总结了十多种时间序列数据分析和预测工具和python库,在我们处理时间序列项目时,可以翻开本文,根据需要选择合适的工具,将会事半功倍! 在处理时间序列项目时, ...
- 时间序列特征构造:以电力负荷预测为例讲解(python语言)
个人电气博文目录传送门 学好电气全靠它,个人电气博文目录(持续更新中-) 时间序列特征构造 时间序列问题,首先不管是回归问题,还是分类问题. 一个模型的好坏,决定因素由数据集的大小,特征值的选取和处理 ...
- python时间序列预测不连续怎么办_Python建模:预测周期性时间序列的正确姿势
公司平台上有不同的api,供内部或外部调用,这些api承担着不同的功能,如查询账号.发版.抢红包等等. 日志会记录下每分钟某api被访问了多少次,即一个api每天会有1440条记录(1440分钟),将 ...
- 组合预测模型 | ARIMA-LSTM时间序列预测(Python)
组合预测模型 | ARIMA-LSTM时间序列预测(Python) 目录 组合预测模型 | ARIMA-LSTM时间序列预测(Python) 预测结果 基本介绍 程序设计 参考资料 预测结果 基本介绍 ...
最新文章
- 亿级流量网关设计思路
- CEO 赠书 | 甲之蜜糖乙之砒霜,创新者也将成为守旧者
- 【Hibernate】Hibernate系列6之HQL查询
- 在Spring + Hibernate中使用二级缓存配置步骤
- FAT 文件系统代码分析--文件系统挂载篇
- 2的6次方怎么用计算机,2的6次方是多少(进制转换计算器)
- Ubuntu 9.10 如何安装rais环境
- 线程池的好处,详解,单例(绝对好记)
- android手机下开发摄像头拍摄
- 钉钉ppt放映显示备注_PPT的备注怎么用,放映PPT时如何显示备注 来看看吧
- 华硕主板无盘启动bios设置_【华硕主板bios启动顺序】华硕主板bois启动项_华硕主板bios硬盘启动...
- 计算机mac地址怎么读,如何读取MAC地址
- 基于vue的开源管理系统模板
- 《计算机网络:自顶向下方法》学习笔记——第六章:链路层
- Neo4j图形数据库的一些基本Cypher查询指令总结
- mysql 2.71828_e值如何计算 2.71828
- 感《明朝后期的中缅战争》
- mysql评论表_如何设计论坛评论表?mysql
- 个人房屋抵押贷款的利率一般是多少?
- 数据结构实训——校园导游系统