美文网首页
1.pycaret进行异常检测

1.pycaret进行异常检测

作者: wo_monic | 来源:发表于2023-11-02 09:39 被阅读0次

本系列的是在pycaret3版本上运行的

  1. 从官方下载数据集,读取数据集,预处理分割为训练集和验证集
# loading sample dataset from pycaret dataset module
import pycaret
from pycaret.datasets import get_data
#data = get_data('anomaly')
#使用本地的数据,所有数据可以自行从https://github.com/pycaret/pycaret/tree/master/datasets下载,因国内服务器无法访问github,所以我把所有的数据集下载到本地进行分析
#使用pandas读取
import pandas as pd
dataset=pd.read_csv("~/AI/pycaret/datasets/anomaly.csv")
data = dataset.sample(frac=0.95, random_state=786)
data_unseen = dataset.drop(data.index)
data.reset_index(inplace=True, drop=True)
data_unseen.reset_index(inplace=True, drop=True)
print('Data for Modeling: ' + str(data.shape))
print('Unseen Data For Predictions: ' + str(data_unseen.shape))

2.数据初始化,并查看有哪些模型可用

# 初始化数据
from pycaret.anomaly import *
s = setup(data,session_id = 136)
models()
image.png

注意异常检测无法自动比较选择最优的模型。这属于无监督学习,所以没法自动选优。

使用iforest(孤立森林)模型
# 训练iforest模型
iforest = create_model('iforest')
# 使用测试集进行检验预测
iforest_pred = predict_model(iforest,data=data)
anomaly_data=iforest_pred[iforest_pred["Anomaly"]==1]
anomaly_data

上面的anomaly_data就是异常值的数据框。此处是挑选异常值Anomaly等于1的行。

# 查看异常值的分布情况
iforest_pred["Anomaly"].value_counts()
可以看到0的有902行,1的有48行,显然少的是异常值

对验证集数据进行验证

# 对最开始的提取的独立数据进行预测
data_unseen_pred = predict_model(iforest,data=data_unseen)

下面的保存模型和实验,加载模型和实验,pycaret所有的类型的建模后的操作都是一样的。差别在于 前面数据的处理和建模时模型的选择,模型的比较,模型调参,模型结果的可视化

保存模型

save_model(iforest,'iforest_pipline')

保存实验

save_experiment("05.anomaly_detection_experiment")

加载模型

load_model_from_disk = load_model("iforest_pipline")

加载实验,注意加载前要先读取数据,加载的时候需要提供数据的变量名

exp_from_disk = load_experiment('05.anomaly_detection_experiment',data=data)

换一种模型检测异常值,此处是使用直方图的方式检测

histogram=create_model("histogram")
predict_model_histogram=predict_model(histogram,data=data)
predict_model_histogram["Anomaly"].value_counts()

异常值这个是无监督学习,有的模型可能无法检测到异常值,不同的模型检测到的数量也可能不一样,这个需要根据实际情况自行进行取舍。

相关文章

  • 04.如何处理多个异常

    多异常处理 A:对代码进行异常检测,并对检测的异常传递给catch处理。对每种异常信息进行不同的捕获处理。 ※注意...

  • 使用Python进行异常检测

    作者|Rashida Nasrin Sucky编译|VK来源|Towards Datas Science 异常检测...

  • Autoencoder神经网络完成异常检测(1)

    为了完成笔者的异常检测目标,在前期使用了传统的机器学习算法后,对“玩具数据集”进行异常检测,[https://...

  • 网络入侵的检测和预防

    标签: 异常检测, 入侵检测,入侵防御,IDS,IPS 异常检测 (Anomaly detection) 异常检测...

  • 【算法】异常检测

    异常检测 异常检测(Anomaly Detection):异常检测就是从数据集中检测出异常样本,是一种无监督学习。...

  • 5月组队学习01:异常检测介绍

    Task01 异常检测介绍(2天) ● 了解异常检测基本概念 ● 了解异常检测基本方法 1. 定义: 异常检测是识...

  • NDK开发---C++学习(七):异常

    前言 C++的异常处理机制能够将异常检测与异常处理分离开来,当异常发生时,它能自动调用异常处理程序进行错误处理。把...

  • 异常以及else with语句笔记

    #异常 #检测异常 try: ...#检测范围 except OSError as reason: #出现异常后的...

  • 关于异常

    异常包括检测异常和非检测异常,开发人员在使用的时候通常使用非检测异常,认为检测异常没有什么用,实际上这种思想是错误...

  • 工作记录-汽车运动状态检测

    需求:检测汽车驾驶过程中的状态对汽车行程进行检测是否发生异常,并且统计异常点信息(包括急加速,急减速,急刹车,急转...

网友评论

      本文标题:1.pycaret进行异常检测

      本文链接:https://www.haomeiwen.com/subject/wzzgidtx.html