文档
  • PyCaret 3.0
  • 开始使用
    • 💻安装
    • 🚀快速入门
    • ⭐教程
    • 📶模块
    • ⚙️数据预处理
      • 数据准备
      • 缩放和转换
      • 特征工程
      • 特征选择
      • 其他设置参数
    • 💡函数
      • 初始化
      • 训练
      • 优化
      • 分析
      • 部署
      • 其他
  • 学习 PYCARET
    • 📖博客
      • 宣布 PyCaret 1.0
      • 宣布 PyCaret 2.0
      • 关于 PyCaret 你可能不知道的 5 件事
      • 构建并部署你的第一个机器学习 Web 应用
      • 使用 PyCaret 在 Power BI 中构建自己的 AutoML
      • 在 Google Kubernetes 上部署 ML Pipeline
      • 在 AWS Fargate 上部署 PyCaret 和 Streamlit
      • 使用 PyCaret 在 Power BI 中进行异常检测
      • 在 Google Kubernetes 上部署 ML 应用
      • 在 GKE 上部署机器学习 Pipeline
      • 在 AWS Fargate 上部署机器学习 Pipeline
      • 使用 Docker 在云端部署 ML Pipeline
      • 使用 PyCaret 在 Power BI 中进行聚类分析
      • 使用 ONNX Runtime 在边缘部署 PyCaret 模型
      • GitHub 是你所需要过的最好的 AutoML
      • 在 AWS Fargate 上部署 PyCaret 和 Streamlit
      • 使用 PyCaret 和 MLflow 实现简单的 MLOps
      • 使用 PyCaret 在 Power BI 中进行聚类分析
      • 使用 PyCaret 在 Alteryx 中进行机器学习
      • 使用 PyCaret 在 KNIME 中进行机器学习
      • 使用 PyCaret 在 SQL 中进行机器学习 第一部分
      • 使用 PyCaret 在 Power BI 中进行机器学习
      • 使用 PyCaret 在 Tableau 中进行机器学习
      • 使用 PyCaret 进行多时间序列预测
      • 使用 PyCaret 预测客户流失
      • 使用 PyCaret 预测潜在客户评分(正确方法)
      • 使用 PyCaret 在 Python 中进行 NLP 文本分类
      • 使用 PyCaret 预测潜在客户评分(正确方法)
      • 使用 PyCaret 预测黄金价格暴跌
      • 使用机器学习预测黄金价格
      • PyCaret 2.1 功能总结
      • 使用 PyCaret 将 ML 模型部署到 SQL Server
      • 使用 PyCaret 和 Gradio 增强你的机器学习
      • 时间序列 101 - 面向初学者
      • 使用 PyCaret 进行时间序列异常检测
      • 使用 PyCaret 回归进行时间序列预测
      • 使用 PyCaret 在 Power BI 中进行主题建模
      • 使用 PyCaret 编写和训练自定义 ML 模型
      • 使用 PyCaret 和 Streamlit 构建并部署 ML 应用
      • PyCaret 2.3.6 发布啦!看看有什么新功能?
    • 📺视频
    • 🛩️备忘单
    • ❓常见问题
    • 👩‍💻示例
  • 重要链接
    • 🛠️发布说明
    • ⚙️API 参考
    • 🙋 讨论
    • 📤问题
    • 👮 许可证
  • 媒体
    • 💻Slack
    • 📺YouTube
    • 🔗LinkedIn
    • 😾GitHub
    • 🔅Stack Overflow
由 GitBook 提供支持
在本页
  • 使用 PyCaret 回归模块进行时间序列预测
  • PyCaret
  • 安装 PyCaret
  • 👉 PyCaret 回归模块
  • 👉 使用 PyCaret 回归模块处理时间序列
  • 👉 数据集
  • 👉 初始化设置
  • 👉 训练和评估所有模型
  • 👉 创建未来预测数据集
  • 你可能也感兴趣
  • 重要链接
  • 想了解特定模块?

这有帮助吗?

  1. 学习 PYCARET
  2. 博客

使用 PyCaret 回归进行时间序列预测

上一个使用 PyCaret 进行时间序列异常检测下一个使用 PyCaret 在 Power BI 中进行主题建模

最后更新于 2 年前

这有帮助吗?

使用 PyCaret 回归模块进行时间序列预测

图片来源:Lukas Blazek on Unsplash

PyCaret

PyCaret 是一个开源的低代码机器学习库和端到端模型管理工具,使用 Python 构建,用于自动化机器学习工作流程。它因易用性、简洁性以及快速高效构建和部署端到端 ML 原型的能力而广受欢迎。

PyCaret 是一个替代性的低代码库,只需少量代码即可替代数百行代码。这使得实验周期呈指数级快速高效。

PyCaret **简单且** **易于使用**。在 PyCaret 中执行的所有操作都按顺序存储在 **Pipeline** 中,该 **Pipeline** 完全自动化以进行**部署**。无论是填充缺失值、独热编码、转换分类数据、特征工程,甚至是超参数调优,PyCaret 都能将其自动化。要了解更多关于 PyCaret 的信息,请观看这段 1 分钟的视频。

本教程假定你对 PyCaret 有一些先前的了解和经验。如果你之前没有使用过它,没问题——你可以通过这些教程快速入门

安装 PyCaret

安装 PyCaret 非常简单,只需几分钟。我们强烈建议使用虚拟环境,以避免与其他库发生潜在冲突。

**# install slim version (default)
**pip install pycaret

**# install the full version**
pip install pycaret[full]

👉 PyCaret 回归模块

PyCaret **回归模块**是一个有监督机器学习模块,用于估计**因变量**(通常称为“结果变量”或“目标”)与一个或多个**自变量**(通常称为“特征”或“预测因子”)之间的关系。

👉 使用 PyCaret 回归模块处理时间序列

时间序列预测大体上可分为以下几类

  • 经典/统计模型 — 移动平均、指数平滑、ARIMA、SARIMA、TBATS

  • 机器学习 — 线性回归、XGBoost、随机森林,或任何使用降维方法的 ML 模型

  • 深度学习 — RNN, LSTM

本教程重点关注第二类,即机器学习。

PyCaret 回归模块的默认设置不适合时间序列数据,因为它包含一些不适用于有序数据(如时间序列数据等具有顺序的数据)的数据准备步骤。

例如,数据集被随机打乱后分割成训练集和测试集。这对于时间序列数据来说没有意义,因为你不会希望将近期日期包含在训练集中,而历史日期却成为测试集的一部分。

时间序列数据还需要不同类型的交叉验证,因为它必须遵循日期的顺序。PyCaret 回归模块在评估模型时默认使用 k 折随机交叉验证。此默认交叉验证设置不适用于时间序列数据。

本教程的以下部分将演示如何轻松更改 PyCaret 回归模块中的默认设置,使其适用于时间序列数据。

👉 数据集

**# read csv file
**import pandas as pd
data = pd.read_csv('AirPassengers.csv')
data['Date'] = pd.to_datetime(data['Date'])
data.head()
**# create 12 month moving average
**data['MA12'] = data['Passengers'].rolling(12).mean()

**# plot the data and MA
**import plotly.express as px
fig = px.line(data, x="Date", y=["Passengers", "MA12"], template = 'plotly_dark')
fig.show()

由于算法无法直接处理日期,让我们从日期中提取一些简单特征,如月份和年份,并删除原始日期列。

**# extract month and year from dates**
data['Month'] = [i.month for i in data['Date']]
data['Year'] = [i.year for i in data['Date']]

**# create a sequence of numbers
**data['Series'] = np.arange(1,len(data)+1)

**# drop unnecessary columns and re-arrange
**data.drop(['Date', 'MA12'], axis=1, inplace=True)
data = data[['Series', 'Year', 'Month', 'Passengers']] 

**# check the head of the dataset**
data.head()
**# split data into train-test set
**train = data[data['Year'] < 1960]
test = data[data['Year'] >= 1960]

**# check shape
**train.shape, test.shape
>>> ((132, 4), (12, 4))

我在初始化 setup 之前手动分割了数据集。另一种方法是将整个数据集传递给 PyCaret 并让它处理分割,在这种情况下,你需要在 setup 函数中传递 data_split_shuffle = False 以避免在分割前打乱数据集。

👉 初始化设置

现在是初始化 setup 函数的时候了,我们将使用 fold_strategy 参数明确传递训练数据、测试数据和交叉验证策略。

**# import the regression module**
from pycaret.regression import *

**# initialize setup**
s = setup(data = train, test_data = test, target = 'Passengers', fold_strategy = 'timeseries', numeric_features = ['Year', 'Series'], fold = 3, transform_target = True, session_id = 123)

👉 训练和评估所有模型

best = compare_models(sort = 'MAE')

基于交叉验证 MAE 的最佳模型是**最小角回归** (MAE: 22.3)。让我们检查一下测试集上的得分。

prediction_holdout = predict_model(best);

测试集上的 MAE 比交叉验证 MAE 高出 12%。不太好,但我们将基于此继续。让我们绘制实际和预测线来可视化拟合情况。

**# generate predictions on the original dataset**
predictions = predict_model(best, data=data)

**# add a date column in the dataset**
predictions['Date'] = pd.date_range(start='1949-01-01', end = '1960-12-01', freq = 'MS')

**# line plot**
fig = px.line(predictions, x='Date', y=["Passengers", "Label"], template = 'plotly_dark')

**# add a vertical rectange for test-set separation**
fig.add_vrect(x0="1960-01-01", x1="1960-12-01", fillcolor="grey", opacity=0.25, line_width=0)

fig.show()

末端的灰色背景是测试期(即 1960 年)。现在让我们确定最终模型,即在整个数据集(这次包括测试集)上训练最佳模型,即最小角回归。

final_best = finalize_model(best)

👉 创建未来预测数据集

现在我们已经在整个数据集(1949 年至 1960 年)上训练了模型,接下来让我们预测未来五年到 1964 年。要使用我们的最终模型生成未来预测,我们首先需要创建一个包含未来日期的 Month、Year、Series 列的数据集。

future_dates = pd.date_range(start = '1961-01-01', end = '1965-01-01', freq = 'MS')

future_df = pd.DataFrame()

future_df['Month'] = [i.month for i in future_dates]
future_df['Year'] = [i.year for i in future_dates]    
future_df['Series'] = np.arange(145,(145+len(future_dates)))

future_df.head()

现在,让我们使用 future_df 来评分并生成预测。

predictions_future = predict_model(final_best, data=future_df)
predictions_future.head()

让我们绘制它。

concat_df = pd.concat([data,predictions_future], axis=0)
concat_df_i = pd.date_range(start='1949-01-01', end = '1965-01-01', freq = 'MS')
concat_df.set_index(concat_df_i, inplace=True)

fig = px.line(concat_df, x=concat_df.index, y=["Passengers", "Label"], template = 'plotly_dark')
fig.show()

是不是很简单?

使用这个轻量级的 Python 工作流程自动化库,你能实现的功能是无限的。如果你觉得这很有用,请不要忘记在我们的 GitHub 仓库给我们点 ⭐️。

你可能也感兴趣

重要链接

想了解特定模块?

点击下方链接查看文档和工作示例。

PyCaret 的默认安装是 pycaret 的精简版本,它只安装硬依赖项,这些依赖项是.

当你安装完整版本的 pycaret 时,所有可选依赖项也会被安装,例如也会被安装。

回归的目标是预测连续值,例如销售额、数量、温度、客户数量等。PyCaret 中的所有模块都提供了许多特性,用于通过函数准备数据用于建模。它拥有超过 25 种开箱即用的算法和用于分析训练模型的性能。

在本教程中,我使用了美国航空公司乘客数据集。你可以从.

样本行
美国航空公司乘客数据集时间序列图(移动平均 = 12)
提取特征后的样本行
compare_models 的结果
predict_model(best) 函数的结果
实际和预测的美国航空公司乘客数 (1949–1960)
来自 future_df 的样本行
来自 predictions_future 的样本行
实际 (1949–1960) 和预测 (1961–1964) 的美国航空公司乘客数

要了解更多关于 PyCaret 的信息,请关注我们和.

加入我们的 Slack 频道。邀请链接.

📖
PyCaret 2.2 发布啦 — 有哪些新功能
宣布 PyCaret 2.0
关于 PyCaret 你可能不知道的五件事
此处列出
此处列出
预处理
setup
多种图表
Kaggle
LinkedIn
Youtube
此处
使用 PyCaret 2.0 在 Power BI 中构建你自己的 AutoML
使用 Docker 在 Azure 上部署机器学习 Pipeline
在 Google Kubernetes Engine 上部署机器学习 Pipeline
在 AWS Fargate 上部署机器学习 Pipeline
构建并部署你的第一个机器学习 Web 应用
使用 AWS Fargate Serverless 部署 PyCaret 和 Streamlit 应用
使用 PyCaret 和 Streamlit 构建并部署机器学习 Web 应用
在 GKE 上部署使用 Streamlit 和 PyCaret 构建的机器学习应用
文档
博客
GitHub
Stack Overflow
安装 PyCaret
Notebook 教程
贡献 PyCaret
分类
回归
聚类
异常检测
自然语言处理
关联规则挖掘