(附代码)使用Python+Pycaret进行异常检测
目标检测与深度学习
共 4869字,需浏览 10分钟
·
2021-07-20 23:35
点击左上方蓝字关注我们
通过探索性异常检测分析了解异常 设置 PyCaret 环境并尝试准备任务的各种数据 比较性能并可视化不同的异常检测算法
介绍
网络安全 — 监控网络流量并确定异常值 欺诈检测—— 可以识别信用卡欺诈 IT 部门 —发现并应对意外风险 银行业务—— 确定异常交易行为
为什么是 PyCaret?
它是一个灵活的低代码库,可以提高生产力,从而节省时间和精力。 PyCaret 是一个简单易用的机器学习库,使我们能够在几分钟内执行 ML 任务。 PyCaret 库允许自动化机器学习步骤,例如数据转换、准备、超参数调整和标准模型比较。
学习目标
执行探索性异常检测分析 PyCaret 环境介绍 创建和选择最佳模型 比较模型中的异常 可视化和解释模型
PyCaret 安装
pip3 install pycaret
数据导入
导入必要的库
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
import numpy as np
导入数据集
from pycaret.datasets import get_data
all_datasets = get_data(‘index’)
![](https://filescdn.proginn.com/5337beedc41712fd3e29bfeff2cc969e/9e1e4c88707d2b0e86000349bf555910.webp)
df = get_data(‘anomaly’)
df.head()
![](https://filescdn.proginn.com/38d53e4ee386081eb485beaae88e9ff7/fa95ee9567188c653abec1835e020550.webp)
df.describe()
df.info()
探索性异常检测分析
Swarm 图
plt.rcParams["figure.figsize"] = (10,8)
sns.swarmplot(x="variable", y="value", data=pd.melt(df))
plt.show()
![](https://filescdn.proginn.com/877a7b98d0fe7d83a08823ad18af59d1/73adf0afb0c3fdfaa9919aed27aedf7b.webp)
箱形图
sns.boxplot(x="variable", y="value", data=pd.melt(df))
plt.show()
![](https://filescdn.proginn.com/bf470573bff4e12f109dd889980a9f67/10d9b17b10707e3b67a699036920da9d.webp)
散点图
sns.scatterplot(data=df, x="Col1", y='Col2')
![](https://filescdn.proginn.com/d182b329b001030713a97b6c4dd9c5cd/404cc58485c137f7f334ec88d2aabdf0.webp)
sns.scatterplot(data=df, x="Col3", y='Col4')
![](https://filescdn.proginn.com/159526aa9272d4234599f897988ec28c/dfa3c306d80bd0c96ff7234bb1838956.webp)
sns.pairplot(df)
![](https://filescdn.proginn.com/6521278a71774aa07bef5faa32ed8d0d/6288e7c8b2d9e08fcab407fd69b6e82b.webp)
df1 = df.melt(‘Col1’, var_name=’cols’, value_name=’vals’)
g = sns.factorplot(x=”Col1", y=”vals”, hue=’cols’, data=df1)
![](https://filescdn.proginn.com/34a1eea1ba2b49b2620d84186ff7954e/bce5edcf102fdc864f4b317b7d4ef61e.webp)
异常检测
from pycaret.anomaly import *
setup = setup(df, session_id = 123)
![](https://filescdn.proginn.com/feb0f34b8db1ca651e449eff11d87404/be31e3c729dd6ea9d39ccd7b9cf186fb.webp)
模型创建
models()
![](https://filescdn.proginn.com/9fa91aa2961d6d2544988fe4f31f4d0c/fb45d70ec8b42766baea60f9cc37b5eb.webp)
隔离森林
iforest = create_model('iforest')
print(iforest)
局部异常因子
lof = create_model('lof')
print(lof)
K最近邻
knn = create_model('knn')
print(knn)neighbours
比较模型中的异常
iforest_results = assign_model(iforest)
iforest_results.head()
![](https://filescdn.proginn.com/982c3295917781aa6df3aee4918019a1/ce93d1facb88ce6d8a4202c646da6e2d.webp)
lof_results = assign_model(lof)
lof_results.head()
![](https://filescdn.proginn.com/f679da1692bc5eecea98cc9c8c741374/8964814d0e204f5a04909f302db15aa2.webp)
knn_results = assign_model(knn)
knn_results.head()
![](https://filescdn.proginn.com/46fdab0341b6b440817c949f95eded14/d26d2fc7212d955b22b4051dbffe0697.webp)
iforest_anomaly=iforest_results[iforest_results['Anomaly']==1]
iforest_anomaly.shape
lof_anomaly=lof_results[lof_results['Anomaly']==1]
lof_anomaly.shape
knn_anomaly=knn_results[knn_results['Anomaly']==1]
knn_anomaly.shape
解释和可视化
from yellowbrick.features import Manifold
dfr = iforest_results['Anomaly']
viz = Manifold(manifold="tsne")
viz.fit_transform(df, dfr)
viz.show()
![](https://filescdn.proginn.com/66fc66efec8c1fe1e5d90ce08f432288/b31ac4d7c3c4b5eacb45f43c604b5a69.webp)
plot_model(knn)
![](https://filescdn.proginn.com/caec3ee1a95e83b23e5090b335690d48/dffa213392a8795cdd5bc5bb235711d7.webp)
plot_model(iforest)
![](https://filescdn.proginn.com/3ff4dc57ab4d335f430949bb19a3352a/f1677deeeff484111b686d078dd563bc.webp)
异常并不总是坏兆头!有时它们在解释结果或数据分析方面非常有用。这些可用于解决不同的数据科学用例。
![](https://filescdn.proginn.com/f91945b72f63c70fe9792a68662fa33a/695d601166a69fc92572c62ffdd99a17.webp)
sns.pairplot(lof_results, hue = "Anomaly")
![](https://filescdn.proginn.com/132ae0ead0f8f30289cf81b6813dbe9f/e40424761a10b999bd56cc750ac7316f.webp)
save_model(iforest,'IForest_Model')
![](https://filescdn.proginn.com/c8506ffcbfc71b85f5221ede139888e8/c091740320924b1cc9fd5a4bdee68379.webp)
尾注
END
整理不易,点赞三连↓
评论