前言
本篇主要根据Analytic Vidhya上的课程Time Series Analysis讲义制作。这个课程主要为想要解决与时间系列预测相关问题的人设计的。深入浅出地为讲解了解决时间序列的分析及预所需的必要技能和技术,并且课程还提供足够的理论和实践材料来进一步提升技能,个人认为是非常好的学习材料,为了进一步巩固知识,因而在此整理分享。原创首发在个人网站www/sunsoda.fun
在学习了前一章《时间序列初识》后,我们通过一个实际的案例正式开始学习如何预测TS吧!
理解数据
“麒麟”的投资者想要投资一种新型的交通工具——JetRail。JetRail使用喷气推进技术来运行rails,并以高速的速度移动人们!如果他们能在未来18个月内获得100多万月度用户,那么这笔投资将是有意义的。为了帮助“麒麟”在他们的决定中,你需要预测在接下来的7个月里在JetRail的流量。在测试文件中,您将提供JetRail的流量数据。你可以在这里获取数据集:https://datahack.analyticsvidhya.com/contest/practice-problem-time-series-2/
要合理的预测TS,对数据有一个全面的认识和理解是前提,因此在我们正式对数据进行预测强,首先进行理解数据的工作:
- 理解数据
- Hypothesis Gneration 假设生成
- 搭建环境,载入数据
- 了解数据的结构和内容
- 特征提取
- 数据探索
Hypothesis Generation 假设生成
假设生成,指在还没有对数据做任何分析前,结合项目实际情况,针对可能影响最终结果的因素,提出一些自己的假设。这个工作可以帮助我们加深对项目的理解,同时有效仅避免过去依赖数据而得到一些具有偏差的判断。
在这个项目中,我们需要预测时间
对JetRail流量
的影响,我们分别从年,月,周,天,小时等不同维度来考量,不难提出以下假设:
A. 年:随着年份增加,流量会增加
- 理由: 第一,人口数可能会随着年增加而增加;第二,JetRail可能会随着年份推移,增加运营线路
B. 月:寒暑假时期,客流量会增加
- 理由:节假期游客可能会增加
C. 周:工作日比周末可能人更多
- 理由:工作日上班,出行人可能更多
- D. 天:可能一些特殊事件发生时,客流量会变大
- 理由:一些临时重大事件的发生可能会影响客流量
E. 小时:早上下午,可客流可能会较中午更多增加
- 理由:上下班高峰期,出行量增大
接下来,我们将基于数据来对这些假设进行验证。
搭建环境,载入数据
Versions:
- Python = 3.7
- Pandas = 0.20.3
- sklearn = 0.19.1
载入相关包
import pandas as pd
import numpy as np #for mathmatical caculation
import matplotlib.pyplot as plt # for plotting
import datetime as dt #to access datetime
import warnings # to ignore warnings
warnings.filterwarnings('ignore')
%matplotlib inline
载入并备份数据