python 时间序列预测 forecast,时间序列预测的7种方法(1)(Python代码实现)

本文翻译自https://www.analyticsvidhya.com/blog/2018/02/time-series-forecasting-methods/,数据集来源于https://datahack.analyticsvidhya.com/contest/practice-problem-time-series-2/。

目录表:

理解数据集和问题陈述

安装包(statsmodels)

方法1-从朴素法开始(Naive Approach)

方法2-简单平均(Simple average)

方法3-移动平均(Moving average)

方法4-一次指数平滑(Single exponential smoothing)

方法5-霍尔特线性趋势预测(Holt's linear trend method)

方法6-三次指数平滑法(Holt 's Winter seasonal method)

方法7-自回归积分滑动平均模型(ARIMA)

这篇文章先翻译到方法3-移动平均章节;

理解数据集和问题陈述

上述的数据集是关于预测JetRail通勤者数量的时间序列问题,JetRail是独角兽投资的新高速铁路服务;该数据集包含了从2012.8--2014.9的两年的数据,利用这些数据我们需要预测接下来7个月的通勤者数量;

从上述数据集下载链接下载数据后,包含train和test两个数据集,这边章 只用到了train 数据集;

import pandas as pd

import numpy as np

import matplotlib.pyplot as plt

#导入数据

df = pd.read_csv('Train.csv')

#打印头部

df.head()

251e997b6e746b145d62b922f9879db2.png

#打印尾部

df.tail()

94e0312c371a36637d03b0de0fcb9694.png

从上述的打印语句可以看出,2012-2014这两年的数据数据是按照小时的通勤数量给出的,我们需要预估将来通勤的数量;

在这篇文章中,为了解释不同的方法,数据以天为基准进行细分和聚合;

构建数据子集,时间从2012.8-2013.12

产生训练集和测试集去训练模型。从2012.8-2013.10这14个月的数据用做训练集,2013.11-2013.12这两个月的数据用做测试集;

以天为单位聚合数据

#构建数据子集

#索引11856标志着2013年结束

df = pd.read_csv('Train.csv', nrows=11856)

# 创建测试集和训练集

#索引10392标志着2013.10的

  • 4
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
时间序列分析和预测在Python中有多方法代码可以实现。其中一常用的方法是使用Statsmodels库。下面是一个示例代码,展示了如何进行时间序列的分解和预测: ```python import pandas as pd import statsmodels.api as sm # 读取时间序列数据 data = pd.read_csv('data.csv', parse_dates=['date'], index_col='date') # 进行时间序列的分解 decomposition = sm.tsa.seasonal_decompose(data, model='additive') # 获取分解后的趋势、季节性和残差 trend = decomposition.trend seasonal = decomposition.seasonal residual = decomposition.resid # 进行时间序列的预测 model = sm.tsa.ARIMA(data, order=(1, 1, 1)) model_fit = model.fit(disp=0) forecast = model_fit.predict(start='2022-01-01', end='2022-12-31') # 打印预测结果 print(forecast) ``` 在这个示例中,首先使用`pd.read_csv`函数读取时间序列数据,并将日期列解析为日期格式,并将日期列设置为索引列。然后使用`sm.tsa.seasonal_decompose`函数对时间序列进行分解,得到趋势、季节性和残差。接下来,使用`sm.tsa.ARIMA`函数构建ARIMA模型,并使用`fit`方法拟合模型。最后,使用`predict`方法对指定日期范围内的时间序列进行预测。 请注意,上述代码只是一个示例,具体的时间序列分析和预测方法可能会因数据的性质和要求而有所不同。你可以根据自己的需求和数据特点选择适合的方法代码进行时间序列的分析和预测。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值