更多Python学习内容:ipengtao.com
pmdarima是一个用于时间序列预测的Python库,它提供了一种自动化的方法来构建ARIMA模型。pmdarima简化了模型选择和调参过程,能够自动确定最佳的ARIMA参数,并进行模型评估和预测。本文将详细介绍pmdarima库的安装、主要功能、基本操作、高级功能及其实践应用,并提供丰富的示例代码。
安装
pmdarima可以通过pip进行安装。确保Python环境已激活,然后在终端或命令提示符中运行以下命令:
pip install pmdarima
主要功能
自动ARIMA:自动选择最佳的ARIMA模型参数。
模型评估:提供模型评估和诊断工具。
模型预测:支持多步预测和动态预测。
季节性调整:支持季节性时间序列建模。
并行处理:支持并行搜索最佳模型参数。
基本操作
导入库和加载数据
首先,需要导入必要的库并加载时间序列数据。
以下示例使用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问题咨询,或者考虑做一些工作以外的副业,都可以扫描二维码添加微信,围观朋友圈一起交流学习。
我们还为大家准备了Python资料和副业项目合集,感兴趣的小伙伴快来找我领取一起交流学习哦!
往期推荐
Python 中的 isinstance() 函数:类型检查的利器
点击下方“阅读原文”查看更多