时间序列预测基础教程系列(10)_快速掌握时间序列预测的7节迷你课(Python)
7天时间让你变成“时间序列预测”模型开发人员
在这个迷你课程中,您将了解如何入门,构建准确的模型,并在7天内使用Python自信地完成预测建模时间序列预测项目。
这是一个很重要的导航帖子。您或许应该把本文加入书签。
迷你课程概述:
这个课程分为7节课。您可以每天完成一节课(推荐)或在一天内完成所有课程(困难)。这取决于你有空的时间和你的热情程度。
- 第01课:时间序列作为监督学习。
- 第02课:加载时间序列数据。
- 第03课:数据可视化。
- 第04课:持久性预测模型。
- 第05课:自回归预测模型。
- 第06课:ARIMA预测模型。
- 第07课:一个完整的项目示例。
每节课可能需要60秒或30分钟。花点时间,按照自己的进度完成课程。在下面的评论中提出问题。或在评论中发布您的结果,和我分享你的喜悦!
第01课:时间序列作为监督学习
时间序列问题与传统预测问题不同。为必须保留的观察数据增加了一个顺序,并且可以为学习算法提供额外的信息。
时间序列数据集可能如下所示:
[code]Time, Observation day1, obs1 day2, obs2 day3, obs3
我们可以将这些数据重新设置为监督学习问题,并预测输入和输出。例如:
[code]Input, Output ?, obs1 obs1, obs2 obs2, obs3 obs3, ?
您可以看到重构意味着我们必须丢弃一些缺少数据的行。
一旦重新构建,我们就可以应用所有我们喜欢的学习算法,如k-Nearest Neighbors和Random Forest。
请参阅学习帖子:
课程02:加载时间序列数据
在开发预测模型之前,必须加载并使用时间序列数据。
Pandas提供了以CSV格式加载数据的工具。
在本课程中,您将下载标准时间序列数据集,将其加载到Pandas中并进行探索。
从DataMarket以CSV格式下载每日女性出生数据集,并使用文件名“ daily-births.csv ”保存。
您可以将时间序列数据集作为Pandas Series加载,并在第0行指定标题行,如下所示:
[code]from pandas import Series series = Series.from_csv('daily-births.csv', header=0)
习惯于在Python中探索加载的时间序列数据:
- 使用head()函数打印前几行。
- 使用size属性打印数据集的维度。
- 使用日期时间字符串查询数据集。
- 打印观察的摘要统计。
请参阅学习帖子:
第03课:数据可视化
数据可视化是时间序列预测的重要组成部分。
随着时间的推移观察的线图很受欢迎,但是您可以使用一套其他图来了解有关您的问题的更多信息。
在本课程中,您必须下载标准时间序列数据集并创建6种不同类型的图。
从DataMarket以CSV格式下载月度洗发水销售数据集,并使用文件名“ shampoo-sales.csv ”保存。
现在创建以下6种类型的图:
- 线图。
- 直方图和密度图。
- 盒子和晶须地块按年或季度。
- 热图。
- 滞后图或散点图。
- 自相关图。
下面是一个简单的线图示例,可以帮助您入门:
[code]from pandas import Series from matplotlib import pyplot series = Series.from_csv('shampoo-sales.csv', header=0) series.plot() pyplot.show()
请参阅学习帖子:
课04:持久性预测模型
建立基线预测非常重要。
您可以做的最简单的预测是使用当前观测值(t)来预测下一时间步(t + 1)的观测值。
这称为天真预测或持久性预测,可能是某些时间序列预测问题的最佳模型。
在本课程中,您将对标准时间序列预测问题进行持久性预测。
从DataMarket以CSV格式下载每日女性出生数据集,并使用文件名“ daily-births.csv ”保存。
您可以将持久性预测实现为单行函数,如下所示:
[code]# persistence model def model_persistence(x): return x
编写代码以加载数据集并使用持久性预测对数据集中的每个时间步进行预测。请注意,您将无法对数据集中的第一个步骤进行预测,因为之前没有使用过的观察。
将所有预测存储在列表中。与实际观测结果相比,您可以计算预测的均方根误差(RMSE),如下所示:
[code]from sklearn.metrics imp 20000 ort mean_squared_error from math import sqrt predictions = [] actual = series.values[1:] rmse = sqrt(mean_squared_error(actual, predictions))
请参阅学习帖子:
第05课:自回归预测模型
自回归意味着开发一种线性模型,该模型使用以前时间步骤的观察来预测未来时间步骤的观察结果(“自动”意味着古希腊语中的自我)。
自回归是一种快速而有效的时间序列预测方法。
statsmodels Python库在AR类中提供自动回归模型。
在本课程中,您将为标准时间序列数据集开发自回归预测模型。
从DataMarket以CSV格式下载月度洗发水销售数据集,并使用文件名“ shampoo-sales.csv ”保存。
您可以按如下方式安装AR模型:
[code]model = AR(dataset) model_fit = model.fit()
您可以使用拟合AR模型预测下一次样本观察,如下所示:
prediction = model_fit.predict(start=len(dataset), end=len(dataset))
您可能希望通过在一半数据集上拟合模型并预测系列的后半部分中的一个或多个来进行实验,然后将预测与实际观察结果进行比较。
请参阅学习帖子:
第06课:ARIMA预测模型
ARIMA是时间序列预测的经典线性模型。
它结合了自回归模型(AR),差异去除趋势和季节性,称为积分(I)和移动平均模型(MA),这是一个旧名称,用于预测误差的模型,用于纠正预测。
statsmodels Python库提供ARIMA类。
在本课程中,您将为标准时间序列数据集开发ARIMA模型。
从DataMarket以CSV格式下载月度洗发水销售数据集,并使用文件名“ shampoo-sales.csv ”保存。
ARIMA类需要一个顺序(p,d,q),它由AR滞后的三个参数p,d和q组成,差异数和MA滞后。
您可以按如下方式拟合ARIMA模型:
[code]model = ARIMA(dataset, order=(0,1,0)) model_fit = model.fit()
您可以为适合的ARIMA模型进行一步式样本外预测,如下所示:
outcome = model_fit.forecast()[0]
洗发水数据集有一个趋势所以我建议广告值1.尝试不同的p和q值并评估结果模型的预测。
请参阅学习帖子:
第07课:一个完整的项目示例
您现在可以使用工具来解决时间序列问题并开发一个简单的预测模型。
在本课程中,您将使用从所有先前课程中学到的技能来处理新的时间序列预测问题。
从DataMarket以CSV格式下载季度标准普尔500指数,1900-1996数据集,并使用文件名“ sp500.csv ” 保存。
拆分数据,可能会将最后4或8个季度提取到单独的文件中。解决问题并开发缺失数据的预测,包括:
- 加载并浏览数据集。
- 可视化数据集。
- 开发持久性模型。
- 开发自回归模型。
- 开发ARIMA模型。
- 可视化预测并总结预测误差。
一个完整的项目实例,请参阅帖子:
- 时间序列预测基础教程系列(15)_如何网格搜索ARIMA模型超参数(Python)
- 时间序列预测基础教程系列(13)_归一化和标准化的区别与方法(Python)
- Python时间序列LSTM预测系列教程(10)-多步预测
- Python时间序列LSTM预测系列教程(5)-单变量
- Python时间序列LSTM预测系列教程(6)-单变量
- Python时间序列LSTM预测系列教程(2)-单变量
- Python时间序列LSTM预测系列教程(8)-多变量
- Python时间序列LSTM预测系列教程(9)-多变量
- Python时间序列LSTM预测系列教程(7)-多变量
- Python时间序列LSTM预测系列教程(1)-单变量
- Python时间序列LSTM预测系列教程(4)-单变量
- 5分钟速学系列:Python入门基础函数和类(有视频教程)
- python基础系列教程——python基础语法全解
- python入门基础教程10 python的分支语句
- Python 循序渐进教程系列 之基础02 基础数据类型
- Python 零基础 快速入门 趣味教程 (咪博士 海龟绘图 turtle) 2. 变量
- Python快速入门教程1:Python 基础教程
- Python Twisted系列教程1:Twisted理论基础
- Python Twisted系列教程10:增强defer功能的客户端
- Python 零基础 快速入门 趣味教程 (咪博士 海龟绘图 turtle) 4. 函数