pycare检测时间序列异常

news2024/12/27 14:58:39

1. 获取时间序列数据(官方文档是多特征,本文举例是单特征) 

未安装pycaret的先安装:pip install --pre pycaret (也可以pip install pycaret)

2.用pycaret检测异常一般用pycaret.anomaly 

  

pycaret.anomaly的所有功能:
assign_model,
create_model,
deploy_model,
evaluate_model,
get_config,
get_logs,
load_config,
load_model,
models,
plot_model,
predict_model,
pull,
save_config,
save_model,
set_config,
set_current_experiment,
setup,
tune_model,
from pycaret.anomaly import *
setup = setup(df, session_id = 123)

 

 3.获取pycaret支持的所有检测异常模型

models()

def create_model(
    model: Union[str, Any],
    fraction: float = 0.05,
    verbose: bool = True,
    fit_kwargs: Optional[dict] = None,
    experiment_custom_tags: Optional[Dict[str, Any]] = None,
    **kwargs,
):
"""
This function trains a given model from the model library. All available
models can be accessed using the ``models`` function.
model: str or scikit-learn compatible object
    ID of an model available in the model library or pass an untrained
    model object consistent with scikit-learn API. Estimators available
    in the model library (ID - Name):

    * 'abod' - Angle-base Outlier Detection
    * 'cluster' - Clustering-Based Local Outlier
    * 'cof' - Connectivity-Based Outlier Factor
    * 'histogram' - Histogram-based Outlier Detection
    * 'knn' - k-Nearest Neighbors Detector
    * 'lof' - Local Outlier Factor
    * 'svm' - One-class SVM detector
    * 'pca' - Principal Component Analysis
    * 'mcd' - Minimum Covariance Determinant
    * 'sod' - Subspace Outlier Detection
    * 'sos' - Stochastic Outlier Selection
fraction: float, default = 0.05
    The amount of contamination of the data set, i.e. the proportion of
    outliers in the data set. Used when fitting to define the threshold on
    the decision function.


verbose: bool, default = True
    Status update is not printed when verbose is set to False.


experiment_custom_tags: dict, default = None
    Dictionary of tag_name: String -> value: (String, but will be string-ified
    if not) passed to the mlflow.set_tags to add new custom tags for the experiment.


fit_kwargs: dict, default = {} (empty dict)
    Dictionary of arguments passed to the fit method of the model.


**kwargs:
    Additional keyword arguments to pass to the estimator.


Returns:
    Trained Model

"""

4. 使用其中一个算法测试(使用的算法参数都是默认的,调参的话效果会更好)

import plotly.express as px
def get_line(df_p):
#     print(df_test)
    fig = px.line(df_p, x="date", y="y", color='mark', title="Sorted Input")
    fig.update_xaxes(tickformat="%Y-%m-%d", hoverformat="%Y-%m-%d", row=1)
    fig.update_traces(dict(mode="markers+lines"))
    fig.update_layout(title_text="趋势图", title_x=0.5)
    fig.update(layout=dict(xaxis=dict(title="日期", tickangle=-45,
                                      showline=True, nticks=20),
                           yaxis=dict(title="值", showline=True)))
    return fig
def mark(df):
    df['date'] = df.index
    df = df.reset_index(drop=True)
    df_start_time = str(df.date.min()).split(' ')[0]
    df_end_time = str(df.date.max()).split(' ')[0]
    df_end_time_next = (datetime.datetime.strptime(df_end_time, '%Y-%m-%d') + datetime.timedelta(days=1)).strftime('%Y-%m-%d')
    date_range = pd.date_range(df_start_time, df_end_time_next, freq='D')
    df_raw = pd.DataFrame()
    df_outliers = pd.DataFrame()
    df_raw["date"] = date_range
    df_outliers["date"] = date_range
    df_outliers_is = df[df['Anomaly']==1]
    df_outliers = pd.merge(df_outliers, df_outliers_is[['date','y']], on=["date"], how="left")
    df_outliers.columns = ['date','y']
    df_outliers['mark'] = 'outliers'
    df_outliers_no = df[df['Anomaly']==0]
    df_raw = pd.merge(df_raw, df_outliers_no[['date','y']], on=["date"], how="left")
    df_raw.columns = ['date','y']
    df_raw['mark'] = 'true'
    df_all = pd.concat([df_raw, df_outliers])
    return df_all
iforest = create_model('iforest') # 默认异常值比例为0.05
iforest_results = assign_model(iforest)
iforest_results = mark(iforest_results)
iforest_results
get_line(iforest_results)

下一个算法:

knn = create_model('knn')
knn_results = assign_model(knn)
knn_results = mark(knn_results)
get_line(knn_results)

 

 下一个算法:

lof = create_model('lof')
lof_results = assign_model(lof)
lof_results = mark(lof_results)
get_line(lof_results)

 下一个算法:

svm = create_model('svm')
svm_results = assign_model(svm)
svm_results = mark(svm_results)
get_line(svm_results)

 下一个算法:

pca = create_model('pca')
pca_results = assign_model(pca)
pca_results = mark(pca_results)
get_line(pca_results)

下一个算法:

sos = create_model('sos')
sos_results = assign_model(sos)
sos_results = mark(sos_results)
get_line(sos_results)

 

 下一个算法:

sod = create_model('sod')
sod_results = assign_model(sod)
sod_results = mark(sod_results)
get_line(sod_results)

 下一个算法:

mcd = create_model('mcd')
mcd_results = assign_model(mcd)
mcd_results = mark(mcd_results)
get_line(mcd_results)

 下一个算法:

histogram = create_model('histogram')
histogram_results = assign_model(histogram)
histogram_results = mark(histogram_results)
get_line(histogram_results)

 下一个算法:

abod = create_model('abod')
abod_results = assign_model(abod)
abod_results = mark(abod_results)
get_line(abod_results)

 下一个算法:

cluster = create_model('cluster')
cluster_results = assign_model(cluster)
cluster_results = mark(cluster_results)
get_line(cluster_results)

 下一个算法:

cof = create_model('cof')
cof_results = assign_model(cof)
cof_results = mark(cof_results)
get_line(cof_results)

5.PyCaret 中为 算法使用evaluate_model() 函数,查看流程

evaluate_model(iforest)

 6.PyCaret 中为 算法使用plot_model() 函数,它将为异常值创建一个 3D 图,在其中我们可以看到为什么某些特征被视为异常。

plot_model(iforest)

plot_model(knn)

我们可以放大这个二维图来查看哪些点被认为是异常值。

可以再次为配对图创建另一个视觉效果,现在使用异常来查看哪些点将被视为异常

import seaborn as sns
iforest = create_model('iforest')
iforest_results = assign_model(iforest)
sns.pairplot(iforest_results, hue = "Anomaly")

最后,我们可以保存模型。可以保存任何合适的模型。这里我们保存了 iforest 模型。

save_model(iforest,'IForest_Model')

 

先这样,有时间再完善吧

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/46308.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

七、【React-Router5】嵌套路由

文章目录1、实现效果2、嵌套路由规则3、修改上一节代码3.1、项目结构变更如下3.2、CODE3.2.1、Home.jsx3.2.2、Message.jsx3.2.3、News.jsx3.3、Result1、实现效果 2、嵌套路由规则 注册子路由时要写上父路由的path值路由的匹配是按照注册路由的顺序进行的 3、修改上一节代码…

SparkMlib 之决策树及其案例

文章目录什么是决策树?决策树的优缺点决策树示例——鸢尾花分类什么是决策树? 决策树及其集成是分类和回归机器学习任务的流行方法。决策树被广泛使用,因为它们易于解释,处理分类特征,扩展到多类分类设置,…

信号类型(雷达)——连续波雷达(二)

系列文章目录 《信号类型(雷达通信)》 《信号类型(雷达)——雷达波形认识(一)》 文章目录 目录 一、连续波雷达信号 1.1 单频雷达信号 1.2 调频连续波雷达 1.3 相位编码连续波雷达 1.4 多频连续波雷…

【AI学习笔记】TensorFlow GPU版本的安装(超详细)

安装步骤:1. 确认显卡是否支持CUDA2. 安装CUDA3. 安装cuDNN3.1 安装 cudnn3.2 将cudnn64_8.dll存放的位置加入Path环境变量4. 安装TensorFlow GPU版本4.1 在Anaconda建立TensorFlow GPU虚拟环境4.2 安装Tensorflow-gpu4.3 安装Keras总结1. 确认显卡是否支持CUDA 在…

【计算机】可信平台模块Trusted Platform Module - TPM

简述 Brief Introduction TPM内部功能模块示意图: 引述 Trusted Platform Module Technology Overview (Windows) | Microsoft Learn: Trusted Platform Module (TPM) technology is designed to provide hardware-based, security-related functions.…

速锐得解码理想汽车L8方向盘转向角度应用随动大灯照明升级

前日,速锐得解码了理想汽车L8车型,由于理想L8是新款车型,架构和理想L9十分相似,与理想ONE这一代有比较大的差异,这恰恰也是我们很好的一次学习机会,也让我们重新认识了理想汽车。 我这里,只挑有…

PCL 点云的法向量

一,点的法向量 点云法线 法向量的概念是很小的时候我们就已经说的,法向量是我们点云中一个非常重要的属性,诸如饿哦们常说的三维重建、点云分割,点云去噪 以及特种描述算法等。 特性: 点云中每一点的法向量夹角和曲率…

【即将开源】⽤于3D激光雷达SLAM闭环检测的词袋模型BoW3D

​以下内容来自从零开始机器人SLAM知识星球 每日更新内容 点击领取学习资料 → 机器人SLAM学习资料大礼包 #论文# BoW3D: Bag of Words for Real-time Loop Closing in 3D LiDAR SLAM 论文地址:https://arxiv.org/abs/2208.07473 作者单位:中国沈阳自动…

C++基础语法

cout输出 cin是键盘输入 //i input 输入 o output输出 stream流 输入输出流头文件&#xff08;类似stdio.h&#xff09; 2 #include <iostream> 3 4 //std(标准) 使用标准的命名空间using namespace std;//命名空间,此标识符作为此组群的名字 5 using namespace std; 6…

A*算法-Python实现

好久没有在CSDN上发文章了&#xff0c;快一年了吧。这两天重新登录了一下&#xff0c;不看不知道&#xff0c;一看吓一跳&#xff0c;没想到访问量快13万了。 之前写博客的时候&#xff0c;想着把一些有用的东西写下来&#xff0c;一方面是当做笔记了&#xff0c;免得以后忘记…

小程序数据请求的方式和注意事项

1.小程序中网络数据请求的限制 出于安全性方面的考虑&#xff0c;小程序官方对数据接口的请求做出了如下两个限制&#xff1a; ① 只能请求HTTPS类型的接口 ② 必须将接口的域名添加到信任列表中 2.配置request合法域名 假设要在自己的微信小程序中&#xff0c;希望请求某…

Mysql 索引基数与选择性

这篇文章主要介绍 MySQL 索引的 Cardinality 值&#xff08;基数&#xff09;以及索引的可选择性。 什么是索引&#xff1f; 先看一下 wiki 定义&#xff1a; 索引&#xff08;英语&#xff1a;Index&#xff09;&#xff0c;是一本书籍的重要组成部分&#xff0c;它把书中的…

微信小程序中基础入门

一、数据绑定 1.数据绑定的基本原则 ① 在data中定义数据&#xff08;在.js文件&#xff09; ② 在wxml中使用数据 2.Mustache语法的格式 把data中的数据绑定到页面中进行渲染&#xff0c;使用MUstache语法&#xff08;双大括号&#xff0c;可以理解为vue中的插值表达式&…

Redis——》数据类型:List(列表)

推荐链接&#xff1a; 总结——》【Java】 总结——》【Mysql】 总结——》【Redis】 总结——》【Spring】 总结——》【SpringBoot】 总结——》【MyBatis、MyBatis-Plus】 Redis——》数据类型&#xff1a;List&#xff08;列表&#xff09;一、简介…

Linux02——操作系统接口

一、前言 OS是软硬件之前的桥梁&#xff1a;操作系统管理硬件&#xff0c;最终以服务的形式提供给用户。如用户读取磁盘数据&#xff0c;OS设备管理将读出来的数据通过文件系统交给用户。OS管理员对CPU&#xff08;进程&#xff09;管理&#xff0c;对内存管理&#xff0c;对设…

PyCharm中鼠标悬停在函数上时显示函数和帮助

一、问题 1.1 鼠标放上去不显示文档的提示 鼠标放在随意一个函数上面不显示他的说明了 我也不知道是咋了 二、解决 2.1 首先我只记得有一个侧边栏叫document 经典的解决办法 2.2 在setting中查看这是干嘛的 很多东西都可以在setting中查看到具体的功能 还可以查看到从哪里能…

Redis高级篇——持久化

Redis持久化 1.RDB 1.1RDB简介 RDB全称Redis Database Backup file &#xff08;Redis数据备份文件&#xff09;&#xff0c;也被叫做Redis数据快照。把内存中的数据都记录到磁盘中&#xff0c;当Redis实例故障重启后&#xff0c;从磁盘中读取快照文件&#xff0c;恢复数据。…

蓝海创意云接受【看苏州】独家专访:助力苏州数字文化行业全方位发展

近日&#xff0c;由蓝海创意云提供渲染服务的动漫电影《老鹰抓小鸡》获金鸡奖最佳美术片提名&#xff0c;位列获奖名单的《长津湖》《独行月球》也由蓝海创意云渲染提供了后期服务。 就此&#xff0c;苏州广播电视总台旗下的苏州权威热点新闻和视频平台【看苏州】对蓝海彤翔执…

# Vue 中 JSON 编辑器使用

Vue 中 JSON 编辑器使用 文章目录Vue 中 JSON 编辑器使用背景描述vue-json-edit安装依赖测试页面效果图bin-code-editor安装依赖测试页面效果图CodeMirror安装依赖测试页面效果图vue-json-views安装依赖属性说明测试页面效果图vue-json-pretty安装依赖属性说明测试页面效果图码…

【CSS3】重点知识内容,快速上手

推荐前端学习路线如下&#xff1a; HTML、CSS、JavaScript、noodJS、组件库、JQuery、前端框架&#xff08;Vue、React&#xff09;、微信小程序和uniapp、TypeScript、webpack 和 vite、Vue 和 React 码源、NextJS、React Native、后端内容。。。。。。 层级选择器 a>b …