文档
  • PyCaret 3.0
  • 快速开始
    • 💻安装
    • 🚀快速入门
    • ⭐教程
    • 📶模块
    • ⚙️数据预处理
      • 数据准备
      • 缩放与转换
      • 特征工程
      • 特征选择
      • 其他设置参数
    • 💡函数
      • 初始化
      • 训练
      • 优化
      • 分析
      • 部署
      • 其他
  • 学习 PYCARET
    • 📖博客
      • 宣布 PyCaret 1.0 发布
      • 宣布 PyCaret 2.0 发布
      • 关于 PyCaret 你不知道的 5 件事
      • 构建并部署你的第一个机器学习 Web 应用
      • 使用 PyCaret 在 Power BI 中构建你自己的 AutoML
      • 在 Google Kubernetes 上部署机器学习管线
      • 在 AWS Fargate 上部署 PyCaret 和 Streamlit
      • 使用 PyCaret 在 Power BI 中进行异常检测
      • 在 Google Kubernetes 上部署 ML 应用
      • 在 GKE 上部署机器学习管线
      • 在 AWS Fargate 上部署机器学习管线
      • 使用 Docker 在云上部署机器学习管线
      • 使用 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 提升你的 ML 能力
      • 时间序列 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 异常检测模块
  • 👉 数据集
  • 👉 数据准备
  • 👉 实验设置
  • 👉 模型训练
  • 即将推出!
  • 你可能也感兴趣
  • 重要链接
  • 想了解某个特定模块?

这有帮助吗?

  1. 学习 PYCARET
  2. 博客

使用 PyCaret 进行时间序列异常检测

上一篇时间序列 101 - 入门篇下一篇使用 PyCaret 回归进行时间序列预测

最后更新于 2 年前

这有帮助吗?

使用 PyCaret 进行时间序列异常检测

一篇关于使用 PyCaret 进行时间序列数据无监督异常检测的逐步教程

PyCaret — 一个 Python 中的开源、低代码机器学习库

👉 引言

这是一篇逐步的、对初学者友好的教程,介绍如何使用 PyCaret 的无监督异常检测模块检测时间序列数据中的异常。

本教程的学习目标

  • 什么是异常检测?异常检测的类型。

  • 异常检测在业务中的用例。

  • 使用 PyCaret 训练和评估异常检测模型。

  • 标记异常并分析结果。

👉 PyCaret

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

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

PyCaret 简单易用。在 PyCaret 中执行的所有操作都按顺序存储在 Pipeline 中,该管线完全自动化,可用于**部署**。无论是填充缺失值、独热编码、转换分类数据、特征工程,甚至是超参数调优,PyCaret 都能自动化完成。

👉 安装 PyCaret

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

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

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

👉 什么是异常检测

异常检测是一种用于识别稀有项目、事件或观察的技术,这些项目、事件或观察通过与数据主体显著不同而引起怀疑。

通常,异常项会转化为某种类型的问题,例如

  • 银行欺诈,

  • 结构缺陷,

  • 医疗问题,

  • 错误等。

异常检测算法大致可分为以下几类

**(a) 监督式:**当数据集具有标识哪些事务是异常、哪些是正常的标签时使用。(这类似于监督式分类问题)。

**(b) 无监督式:**无监督意味着没有标签,模型在完整数据上训练,并假定大多数实例是正常的。

(c) 半监督式:模型仅在正常数据上训练(不包含任何异常)。当训练好的模型用于新的数据点时,它可以预测新的数据点是否正常(基于训练模型中数据的分布)。

👉 PyCaret 异常检测模块

👉 数据集

import pandas as pd
data = pd.read_csv('[https://raw.githubusercontent.com/numenta/NAB/master/data/realKnownCause/nyc_taxi.csv](https://raw.githubusercontent.com/numenta/NAB/master/data/realKnownCause/nyc_taxi.csv)')

data['timestamp'] = pd.to_datetime(data['timestamp'])

data.head()
**# create moving-averages
**data['MA48'] = data['value'].rolling(48).mean()
data['MA336'] = data['value'].rolling(336).mean()

# plot 
import plotly.express as px
fig = px.line(data, x="timestamp", y=['value', 'MA48', 'MA336'], title='NYC Taxi Trips', template = 'plotly_dark')
fig.show()

👉 数据准备

由于算法无法直接处理日期或时间戳数据,我们将在训练模型之前从时间戳中提取特征,并丢弃实际的时间戳列。

**# drop moving-average columns
**data.drop(['MA48', 'MA336'], axis=1, inplace=True)

**# set timestamp to index**
data.set_index('timestamp', drop=True, inplace=True)

**# resample timeseries to hourly **
data = data.resample('H').sum()

**# creature features from date**
data['day'] = [i.day for i in data.index]
data['day_name'] = [i.day_name() for i in data.index]
data['day_of_year'] = [i.dayofyear for i in data.index]
data['week_of_year'] = [i.weekofyear for i in data.index]
data['hour'] = [i.hour for i in data.index]
data['is_weekday'] = [i.isoweekday() for i in data.index]

data.head()

👉 实验设置

**# init setup**
from pycaret.anomaly import *
s = setup(data, session_id = 123)

无论何时在 PyCaret 中初始化 setup 函数,它都会对数据集进行分析并推断所有输入特征的数据类型。在这种情况下,你可以看到 day_name 和 is_weekday 被推断为分类类型,其余被推断为数值类型。你可以按 Enter 键继续。

👉 模型训练

要查看所有可用算法的列表

**# check list of available models**
models()
**# train model
**iforest = create_model('iforest', fraction = 0.1)
iforest_results = assign_model(iforest)
iforest_results.head()

注意,附加了两个新列,即 Anomaly,其中离群点值为 1,正常点值为 0;以及 Anomaly_Score,这是一个连续值,也称为决策函数(在内部,算法根据此分数确定异常)。

**# check anomalies
**iforest_results[iforest_results['Anomaly'] == 1].head()

我们现在可以在图表上绘制异常点进行可视化。

import plotly.graph_objects as go

**# plot value on y-axis and date on x-axis**
fig = px.line(iforest_results, x=iforest_results.index, y="value", title='NYC TAXI TRIPS - UNSUPERVISED ANOMALY DETECTION', template = 'plotly_dark')

**# create list of outlier_dates**
outlier_dates = iforest_results[iforest_results['Anomaly'] == 1].index

**# obtain y value of anomalies to plot**
y_values = [iforest_results.loc[i]['value'] for i in outlier_dates]

fig.add_trace(go.Scatter(x=outlier_dates, y=y_values, mode = 'markers', 
                name = 'Anomaly', 
                marker=dict(color='red',size=10)))
        
fig.show()

注意,模型在 1 月 1 日(新年夜)附近检测到了一些异常。模型还在 1 月 18 日至 1 月 22 日左右检测到了一些异常,当时北美暴雪** **(一场****快速移动的破坏性暴风雪)穿过东北部,在纽约市周边地区倾泻了 30 厘米的积雪。

如果你搜索图中其他红点附近的日期,你很可能能够找到这些点被模型检测为异常的原因(希望如此)。

我希望你能体会到 PyCaret 的易用性和简洁性。只需几行代码和几分钟的实验,我就训练了一个无监督异常检测模型,并标记了数据集,用于检测时间序列数据中的异常。

即将推出!

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

你可能也感兴趣

重要链接

想了解某个特定模块?

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

要了解更多关于 PyCaret 的信息,请查看其.

PyCaret 的默认安装是 pycaret 的精简版,仅安装硬依赖项,它们是.

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

异常检测业务用例

PyCaret 的** 模块是一个无监督机器学习模块,用于识别稀有项目、事件或**观察**。它提供了超过 15 种算法和用于分析训练模型的结​​果。

我将使用 NYC 出租车乘客数据集,该数据集包含 2014 年 7 月至 2015 年 1 月期间每半小时的出租车乘客数量。你可以从此处下载数据集.

数据样本行
value, moving_average(48), 和 moving_average(336)
数据转换后的样本行

PyCaret 所有模块的共同点是,setup 函数是在 PyCaret 中开始任何机器学习实验的第一步,也是唯一必须的一步。除了默认执行一些基本处理任务外,PyCaret 还提供了广泛的预处理功能。要了解 PyCaret 中所有预处理功能的更多信息,你可以查看此.

pycaret.anomaly 模块中的 setup 函数
setup 函数的输出 - 为显示而截断
models() 函数的输出

在本教程中,我使用的是 Isolation Forest,但你可以将下方代码中的 ID ‘iforest’ 替换为任何其他模型 ID 来更改算法。如果你想了解更多关于 Isolation Forest 算法的信息,你可以参考此.

iforest_results 的样本行
iforest_results 的样本行(过滤条件:Anomaly == 1)
纽约市出租车行程 — 无监督异常检测

下周我将写一篇关于使用 PyCaret 训练自定义模型的教程,使用。你可以在, 、和关注我,以便在新教程发布时获得即时通知。

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

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

📖
GitHub
此处列出
此处列出
**异常检测
多种图表
此处
链接
此处
PyCaret 回归模块
Medium
LinkedIn
Twitter
LinkedIn
YouTube
此处
使用 PyCaret 2.0 在 Power BI 中构建你自己的 AutoML
使用 Docker 在 Azure 上部署机器学习管线
在 Google Kubernetes Engine 上部署机器学习管线
在 AWS Fargate 上部署机器学习管线
构建并部署你的第一个机器学习 Web 应用
使用 AWS Fargate serverless 部署 PyCaret 和 Streamlit 应用
使用 PyCaret 和 Streamlit 构建并部署机器学习 Web 应用
在 GKE 上部署使用 Streamlit 和 PyCaret 构建的机器学习应用
文档
博客
GitHub
StackOverflow
安装 PyCaret
Notebook 教程
为 PyCaret 做贡献
分类
回归
聚类
异常检测
自然语言处理
关联规则挖掘
实践教程