Python | ARIMA时间序列模型预测航空公司的乘客数量

简介: Python | ARIMA时间序列模型预测航空公司的乘客数量

时间序列 被定义为一系列按时间顺序索引的数据点。时间顺序可以是每天,每月或每年。

以下是一个时间序列示例,该示例说明了从1949年到1960年每月航空公司的乘客数量。

时间序列预测

时间序列预测是使用统计模型根据过去的结果预测时间序列的未来值的过程。

一些示例

  • 预测未来的客户数量。
  • 解释销售中的季节性模式。
  • 检测异常事件并估计其影响的程度。
  • 估计新推出的产品对已售出产品数量的影响。

时间序列的组成部分:

代码:航空公司乘客的ETS分解数据集:

# 导入所需的库
import numpy as np
  
# 读取AirPassengers数据集
airline = pd.read_csv('data.csv',
                       index_col ='Month',
                       parse_dates = True)
  
# 输出数据集的前五行
airline.head()
  
# ETS分解
# ETS图
result.plot()


输出:

ARIMA时间序列预测模型

ARIMA代表自回归移动平均模型,由三个阶数参数 _(p,d,q)指定。_

ARIMA模型的类型

自动ARIMA

“ auto_arima” 函数 可帮助我们确定ARIMA模型的最佳参数,并返回拟合的ARIMA模型。

代码:ARIMA模型的参数分析

# 忽略警告
import warnings
warnings.filterwarnings("ignore")
  
# 将自动arima函数拟合到AirPassengers数据集
autoarima(airline['# Passengers'], start_p = 1, start_q = 1,
                          max_p = 3, max_q = 3, m = 12,
                          stepwise = True          # 设置为逐步
  
# 输出摘要
stepwise_fit.summary()


输出:

代码:将ARIMA模型拟合到AirPassengers数据集

# 将数据拆分为训练/测试集
test = iloc[len(airline)-12:] # 设置一年(12个月)进行测试
  
# 在训练集上拟合一个SARIMAX(0,1,1)x(2,1,1,12)
  
SARIMAX(Passengers, 
                order = (0, 1, 1), 
                seasonal_order =(2, 1, 1, 12
result.summary()


输出:

代码:ARIMA模型对测试集的预测

# 针对测试集的一年预测
predict(start, end,
                          
  
#绘图预测和实际值
predictions.plot


输出:

代码:使用MSE和RMSE评估模型

# 加载特定的评估工具
# 计算均方根误差
rmse(test["# Passengers"], predictions)
  
# 计算均方误差
mean_squared_error(test["# Passengers"], predictions)


输出:

代码:使用ARIMA模型进行预测

# 在完整数据集上训练模型
result = model.fit()
  
# 未来3年预测
result.predict(start = len(airline), 
                          end = (len(airline)-1) + 3 * 12, 
  
# 绘制预测值
forecast.plot(legend = True)


输出:

  • 趋势:趋势显示了长时间序列数据的总体方向。趋势可以是增加(向上),减少(向下)或水平(平稳)。
  • 季节性:季节性成分在时间,方向和幅度方面表现出重复的趋势。一些例子包括由于炎热的天气导致夏季用水量增加,或每年假期期间航空公司乘客人数增加。
  • 周期性成分: 这些是在特定时间段内没有稳定重复的趋势。周期是指时间序列的起伏,通常在商业周期中观察到。这些周期没有季节性变化,但通常会在3到12年的时间范围内发生,具体取决于时间序列的性质。
  • 不规则变化: 这些是时间序列数据中的波动,当趋势和周期性变化被删除时,这些波动变得明显。这些变化是不可预测的,不稳定的,并且可能是随机的,也可能不是随机的。
  • ETS分解
    ETS分解用于分解时间序列的不同部分。ETS一词代表误差、趋势和季节性。
  • AR(_p_)自回归 –一种回归模型,利用当前观测值与上一个期间的观测值之间的依存关系。自回归(_AR(p)_)分量是指在时间序列的回归方程中使用过去的值。
  • I(_d_) –使用观测值的差分(从上一时间步长的观测值中减去观测值)使时间序列稳定。差分涉及将序列的当前值与其先前的值相减d次。
  • MA(_q_)移动平均值 –一种模型,该模型使用观测值与应用于滞后观测值的移动平均值模型中的残留误差之间的相关性。移动平均成分将模型的误差描述为先前误差项的组合。 _q_ 表示要包含在模型中的项数。
  • ARIMA:非季节性自回归移动平均模型
  • SARIMA季节性ARIMA
  • SARIMAX:具有外生变量的季节性ARIMA

  • *

相关文章
|
5天前
|
机器学习/深度学习 数据可视化 TensorFlow
使用Python实现深度学习模型的分布式训练
使用Python实现深度学习模型的分布式训练
113 73
|
8天前
|
机器学习/深度学习 数据采集 供应链
使用Python实现智能食品消费需求分析的深度学习模型
使用Python实现智能食品消费需求分析的深度学习模型
46 21
|
10天前
|
机器学习/深度学习 数据采集 搜索推荐
使用Python实现智能食品消费偏好预测的深度学习模型
使用Python实现智能食品消费偏好预测的深度学习模型
50 23
|
11天前
|
机器学习/深度学习 数据采集 数据挖掘
使用Python实现智能食品消费习惯预测的深度学习模型
使用Python实现智能食品消费习惯预测的深度学习模型
54 19
|
8天前
|
机器学习/深度学习 数据采集 数据挖掘
使用Python实现智能食品消费模式预测的深度学习模型
使用Python实现智能食品消费模式预测的深度学习模型
35 2
|
16天前
|
人工智能 数据可视化 数据挖掘
探索Python编程:从基础到高级
在这篇文章中,我们将一起深入探索Python编程的世界。无论你是初学者还是有经验的程序员,都可以从中获得新的知识和技能。我们将从Python的基础语法开始,然后逐步过渡到更复杂的主题,如面向对象编程、异常处理和模块使用。最后,我们将通过一些实际的代码示例,来展示如何应用这些知识解决实际问题。让我们一起开启Python编程的旅程吧!
|
14天前
|
存储 数据采集 人工智能
Python编程入门:从零基础到实战应用
本文是一篇面向初学者的Python编程教程,旨在帮助读者从零开始学习Python编程语言。文章首先介绍了Python的基本概念和特点,然后通过一个简单的例子展示了如何编写Python代码。接下来,文章详细介绍了Python的数据类型、变量、运算符、控制结构、函数等基本语法知识。最后,文章通过一个实战项目——制作一个简单的计算器程序,帮助读者巩固所学知识并提高编程技能。
|
3天前
|
Unix Linux 程序员
[oeasy]python053_学编程为什么从hello_world_开始
视频介绍了“Hello World”程序的由来及其在编程中的重要性。从贝尔实验室诞生的Unix系统和C语言说起,讲述了“Hello World”作为经典示例的起源和流传过程。文章还探讨了C语言对其他编程语言的影响,以及它在系统编程中的地位。最后总结了“Hello World”、print、小括号和双引号等编程概念的来源。
97 80
|
21天前
|
存储 索引 Python
Python编程数据结构的深入理解
深入理解 Python 中的数据结构是提高编程能力的重要途径。通过合理选择和使用数据结构,可以提高程序的效率和质量
133 59
|
1天前
|
分布式计算 大数据 数据处理
技术评测:MaxCompute MaxFrame——阿里云自研分布式计算框架的Python编程接口
随着大数据和人工智能技术的发展,数据处理的需求日益增长。阿里云推出的MaxCompute MaxFrame(简称“MaxFrame”)是一个专为Python开发者设计的分布式计算框架,它不仅支持Python编程接口,还能直接利用MaxCompute的云原生大数据计算资源和服务。本文将通过一系列最佳实践测评,探讨MaxFrame在分布式Pandas处理以及大语言模型数据处理场景中的表现,并分析其在实际工作中的应用潜力。
14 2
下一篇
DataWorks