Python pmdarima库:时间序列预测

6c1c92d551de39c295899459ad461f0e.png

更多Python学习内容:ipengtao.com

pmdarima是一个用于时间序列预测的Python库,它提供了一种自动化的方法来构建ARIMA模型。pmdarima简化了模型选择和调参过程,能够自动确定最佳的ARIMA参数,并进行模型评估和预测。本文将详细介绍pmdarima库的安装、主要功能、基本操作、高级功能及其实践应用,并提供丰富的示例代码。

安装

pmdarima可以通过pip进行安装。确保Python环境已激活,然后在终端或命令提示符中运行以下命令:

pip install pmdarima

主要功能

  1. 自动ARIMA:自动选择最佳的ARIMA模型参数。

  2. 模型评估:提供模型评估和诊断工具。

  3. 模型预测:支持多步预测和动态预测。

  4. 季节性调整:支持季节性时间序列建模。

  5. 并行处理:支持并行搜索最佳模型参数。

基本操作

导入库和加载数据

首先,需要导入必要的库并加载时间序列数据。

以下示例使用pandas库加载时间序列数据:

import pandas as pd
import pmdarima as pm
import matplotlib.pyplot as plt

# 加载示例数据
data = pd.read_csv('airline_passengers.csv', index_col='Month', parse_dates=True)
data.plot()
plt.show()

自动ARIMA建模

pmdarima的核心功能是自动选择最佳的ARIMA模型参数。

以下示例展示了如何使用auto_arima函数进行自动建模:

# 自动ARIMA建模
model = pm.auto_arima(data, seasonal=True, m=12, stepwise=True, suppress_warnings=True)
print(model.summary())

进行预测

使用训练好的ARIMA模型,可以进行未来值的预测。

以下示例展示了如何进行多步预测:

# 进行未来24个月的预测
n_periods = 24
forecast, conf_int = model.predict(n_periods=n_periods, return_conf_int=True)

# 创建时间序列索引
index_of_fc = pd.date_range(data.index[-1], periods=n_periods+1, freq='MS')[1:]

# 创建预测结果数据框
forecast_series = pd.Series(forecast, index=index_of_fc)
lower_series = pd.Series(conf_int[:, 0], index=index_of_fc)
upper_series = pd.Series(conf_int[:, 1], index=index_of_fc)

# 绘制预测结果
plt.figure(figsize=(10, 5))
plt.plot(data, label='实际值')
plt.plot(forecast_series, label='预测值')
plt.fill_between(lower_series.index, lower_series, upper_series, color='k', alpha=0.15)
plt.legend()
plt.show()

高级功能

模型诊断

pmdarima提供了多种工具用于模型诊断。

以下示例展示了如何进行残差分析:

# 模型残差诊断
model.plot_diagnostics(figsize=(15, 12))
plt.show()

并行搜索

pmdarima支持并行搜索最佳模型参数,以提高搜索效率。

以下示例展示了如何启用并行搜索:

# 并行搜索最佳ARIMA模型参数
model = pm.auto_arima(data, seasonal=True, m=12, stepwise=False, n_jobs=4, suppress_warnings=True)
print(model.summary())

自定义模型参数范围

pmdarima允许用户自定义模型参数的搜索范围。

以下示例展示了如何自定义p、d、q参数的范围:

# 自定义ARIMA模型参数范围
model = pm.auto_arima(data, start_p=0, start_q=0, max_p=5, max_q=5, d=None, seasonal=True, m=12, start_P=0, start_Q=0, max_P=5, max_Q=5, D=1, trace=True, error_action='ignore', suppress_warnings=True, stepwise=True)
print(model.summary())

使用外部回归变量

pmdarima支持使用外部回归变量进行建模。

以下示例展示了如何使用外部回归变量:

# 加载示例数据和外部回归变量
data = pd.read_csv('airline_passengers.csv', index_col='Month', parse_dates=True)
external_regressors = pd.read_csv('external_regressors.csv', index_col='Month', parse_dates=True)

# 自动ARIMA建模
model = pm.auto_arima(data, X=external_regressors, seasonal=True, m=12, stepwise=True, suppress_warnings=True)
print(model.summary())

# 进行未来24个月的预测
n_periods = 24
forecast, conf_int = model.predict(n_periods=n_periods, X=external_regressors[-n_periods:], return_conf_int=True)

# 创建时间序列索引
index_of_fc = pd.date_range(data.index[-1], periods=n_periods+1, freq='MS')[1:]

# 创建预测结果数据框
forecast_series = pd.Series(forecast, index=index_of_fc)
lower_series = pd.Series(conf_int[:, 0], index=index_of_fc)
upper_series = pd.Series(conf_int[:, 1], index=index_of_fc)

# 绘制预测结果
plt.figure(figsize=(10, 5))
plt.plot(data, label='实际值')
plt.plot(forecast_series, label='预测值')
plt.fill_between(lower_series.index, lower_series, upper_series, color='k', alpha=0.15)
plt.legend()
plt.show()

实践应用

预测销售数据

以下示例展示了如何使用pmdarima库预测销售数据:

import pandas as pd
import pmdarima as pm
import matplotlib.pyplot as plt

# 加载销售数据
data = pd.read_csv('sales_data.csv', index_col='Date', parse_dates=True)
data.plot()
plt.show()

# 自动ARIMA建模
model = pm.auto_arima(data, seasonal=True, m=12, stepwise=True, suppress_warnings=True)
print(model.summary())

# 进行未来12个月的预测
n_periods = 12
forecast, conf_int = model.predict(n_periods=n_periods, return_conf_int=True)

# 创建时间序列索引
index_of_fc = pd.date_range(data.index[-1], periods=n_periods+1, freq='MS')[1:]

# 创建预测结果数据框
forecast_series = pd.Series(forecast, index=index_of_fc)
lower_series = pd.Series(conf_int[:, 0], index=index_of_fc)
upper_series = pd.Series(conf_int[:, 1], index=index_of_fc)

# 绘制预测结果
plt.figure(figsize=(10, 5))
plt.plot(data, label='实际值')
plt.plot(forecast_series, label='预测值')
plt.fill_between(lower_series.index, lower_series, upper_series, color='k', alpha=0.15)
plt.legend()
plt.show()

分析和预测股票价格

以下示例展示了如何使用pmdarima库分析和预测股票价格:

import pandas as pd
import pmdarima as pm
import matplotlib.pyplot as plt

# 加载股票价格数据
data = pd.read_csv('stock_prices.csv', index_col='Date', parse_dates=True)
data.plot()
plt.show()

# 自动ARIMA建模
model = pm.auto_arima(data, seasonal=False, stepwise=True, suppress_warnings=True)
print(model.summary())

# 进行未来30天的预测
n_periods = 30
forecast, conf_int = model.predict(n_periods=n_periods, return_conf_int=True)

# 创建时间序列索引
index_of_fc = pd.date_range(data.index[-1], periods=n_periods, freq='B')

# 创建预测结果数据框
forecast_series = pd.Series(forecast, index=index_of_fc)
lower_series = pd.Series(conf_int[:, 0], index=index_of_fc)
upper_series = pd.Series(conf_int[:, 1], index=index_of_fc)

# 绘制预测结果
plt.figure(figsize=(10, 5))
plt.plot(data, label='实际值')
plt.plot(forecast_series, label='预测值')
plt.fill_between(lower_series.index, lower_series, upper_series, color='k', alpha=0.15)
plt.legend()
plt.show()

预测能源消耗

以下示例展示了如何使用pmdarima库预测能源消耗:

import pandas as pd
import pmdarima as pm
import matplotlib.pyplot as plt

# 加载能源消耗数据
data = pd.read_csv('energy_consumption.csv', index_col='Date', parse_dates=True)
data.plot()
plt.show()

# 自动ARIMA建模
model = pm.auto_arima(data, seasonal=True, m=12, stepwise=True, suppress_warnings=True)
print(model.summary())

# 进行未来12个月的预测
n_periods = 12
forecast, conf_int = model.predict(n_periods=n_periods, return_conf_int=True)

# 创建时间序列索引
index_of_fc = pd.date_range(data.index[-1], periods=n_periods+1, freq='MS')[1:]

# 创建预测结果数据框
forecast_series = pd.Series(forecast, index=index_of_fc)
lower_series = pd.Series(conf_int[:, 0], index=index_of_fc)
upper_series = pd.Series(conf_int[:, 1], index=index_of_fc)

# 绘制预测结果
plt.figure(figsize=(10, 5))
plt.plot(data, label='实际值')
plt.plot(forecast_series, label='预测值')
plt.fill_between(lower_series.index, lower_series, upper_series, color='k', alpha=0.15)
plt.legend()
plt.show()

使用外部回归变量预测温度变化

以下示例展示了如何使用pmdarima库和外部回归变量预测温度变化:

import pandas as pd
import pmdarima as pm
import matplotlib.pyplot as plt

# 加载温度数据和外部回归变量
temperature_data = pd.read_csv('temperature_data.csv', index_col='Date', parse_dates=True)
external_regressors = pd.read_csv('external_regressors.csv', index_col='Date', parse_dates=True)

# 自动ARIMA建模
model = pm.auto_arima(temperature_data, X=external_regressors, seasonal=True, m=12, stepwise=True, suppress_warnings=True)
print(model.summary())

# 进行未来12个月的预测
n_periods = 12
forecast, conf_int = model.predict(n_periods=n_periods, X=external_regressors[-n_periods:], return_conf_int=True)

# 创建时间序列索引
index_of_fc = pd.date_range(temperature_data.index[-1], periods=n_periods+1, freq='MS')[1:]

# 创建预测结果数据框
forecast_series = pd.Series(forecast, index=index_of_fc)
lower_series = pd.Series(conf_int[:, 0], index=index_of_fc)
upper_series = pd.Series(conf_int[:, 1], index=index_of_fc)

# 绘制预测结果
plt.figure(figsize=(10, 5))
plt.plot(temperature_data, label='实际值')
plt.plot(forecast_series, label='预测值')
plt.fill_between(lower_series.index, lower_series, upper_series, color='k', alpha=0.15)
plt.legend()
plt.show()

总结

pmdarima库为Python开发者提供了一个功能强大且灵活的时间序列预测工具。通过其自动化的ARIMA模型选择和调参功能,用户可以轻松进行时间序列数据的建模和预测。无论是在销售数据、股票价格、能源消耗还是温度变化的预测方面,pmdarima都能提供强大的支持和便利。本文详细介绍了pmdarima库的安装、主要功能、基本操作、高级功能及其实践应用,并提供了丰富的示例代码。希望在实际项目中能够充分利用pmdarima库,提高时间序列预测的效率和准确性。

如果你觉得文章还不错,请大家 点赞、分享、留言 ,因为这将是我持续输出更多优质文章的最强动力!

更多Python学习内容:ipengtao.com


如果想要系统学习Python、Python问题咨询,或者考虑做一些工作以外的副业,都可以扫描二维码添加微信,围观朋友圈一起交流学习。

c7926c27a558a9d3de814e06827d5f28.gif

我们还为大家准备了Python资料和副业项目合集,感兴趣的小伙伴快来找我领取一起交流学习哦!

8a316c5a87a7602f319acf6cdf874965.jpeg

往期推荐

Python 中的 iter() 函数:迭代器的生成工具

Python 中的 isinstance() 函数:类型检查的利器

Python 中的 sorted() 函数:排序的利器

Python 中的 hash() 函数:哈希值的奥秘

Python 中的 slice() 函数:切片的利器

Python 的 tuple() 函数:创建不可变序列

点击下方“阅读原文”查看更多

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值