欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解使用Python+Pycaret進(jìn)行異常檢測(cè)

 更新時(shí)間:2022年03月04日 10:54:34   作者:woshicver  
異常檢測(cè)提供了在數(shù)據(jù)中發(fā)現(xiàn)模式、偏差和異常的途徑,這些模式、偏差和異常不限于模型的標(biāo)準(zhǔn)行為。本文將用Python?Pycaret進(jìn)行異常檢測(cè),感興趣的可以了解一下

概述

1.通過探索性異常檢測(cè)分析了解異常

2.設(shè)置 PyCaret 環(huán)境并嘗試準(zhǔn)備任務(wù)的各種數(shù)據(jù)

3.比較性能并可視化不同的異常檢測(cè)算法

介紹

異常檢測(cè)提供了在數(shù)據(jù)中發(fā)現(xiàn)模式、偏差和異常的途徑,這些模式、偏差和異常不限于模型的標(biāo)準(zhǔn)行為。異常檢測(cè)旨在確定數(shù)據(jù)中的異常情況。這些異常也被稱為數(shù)據(jù)集的異常值。

隨著數(shù)據(jù)呈指數(shù)級(jí)增長(zhǎng),分析數(shù)據(jù)并得出形成重要業(yè)務(wù)決策基礎(chǔ)的見解已成為一種普遍趨勢(shì)。我們不僅需要分析數(shù)據(jù),還需要準(zhǔn)確地解釋數(shù)據(jù)。找出異常并確定異常行為可以讓我們找到最佳解決方案。

異常檢測(cè)可以應(yīng)用于各種領(lǐng)域。下面列出了其中一些。

  • 網(wǎng)絡(luò)安全 —?監(jiān)控網(wǎng)絡(luò)流量并確定異常值
  • 欺詐檢測(cè)——?可以識(shí)別信用卡欺詐
  • IT 部門 —發(fā)現(xiàn)并應(yīng)對(duì)意外風(fēng)險(xiǎn)
  • 銀行業(yè)務(wù)——?確定異常交易行為

許多機(jī)器學(xué)習(xí)算法可用于異常檢測(cè),它在檢測(cè)和分類復(fù)雜數(shù)據(jù)集中的異常值方面起著至關(guān)重要的作用。

為什么是PyCaret

PyCaret是一個(gè)開源、低代碼的 Python 機(jī)器學(xué)習(xí)庫(kù),支持多種功能,例如在幾行代碼中就可以為部署建模的數(shù)據(jù)準(zhǔn)備。

PyCaret 提供的一些的功能包括 -

  • 它是一個(gè)靈活的低代碼庫(kù),可以提高生產(chǎn)力,從而節(jié)省時(shí)間和精力。
  • PyCaret 是一個(gè)簡(jiǎn)單易用的機(jī)器學(xué)習(xí)庫(kù),使我們能夠在幾分鐘內(nèi)執(zhí)行 ML 任務(wù)。
  • PyCaret 庫(kù)允許自動(dòng)化機(jī)器學(xué)習(xí)步驟,例如數(shù)據(jù)轉(zhuǎn)換、準(zhǔn)備、超參數(shù)調(diào)整和標(biāo)準(zhǔn)模型比較。

學(xué)習(xí)目標(biāo)

  • 執(zhí)行探索性異常檢測(cè)分析
  • PyCaret 環(huán)境介紹
  • 創(chuàng)建和選擇最佳模型
  • 比較模型中的異常
  • 可視化和解釋模型

PyCaret 安裝

在你的 jupyter notebook 中安裝最新版本的 Pycaret 并開始使用!

pip3 install pycaret

數(shù)據(jù)導(dǎo)入

讓我們從 PyCaret 預(yù)先配置的數(shù)據(jù)集中導(dǎo)入一個(gè)常見的異常檢測(cè)數(shù)據(jù)集,開始我們的動(dòng)手項(xiàng)目。

導(dǎo)入必要的庫(kù)

首先,導(dǎo)入整個(gè)項(xiàng)目所需的必要庫(kù)。

import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
import numpy as np

導(dǎo)入數(shù)據(jù)集

from pycaret.datasets import get_data
all_datasets = get_data(‘index')

現(xiàn)在我們可以看到所有列出的具有默認(rèn)機(jī)器學(xué)習(xí)任務(wù)的數(shù)據(jù)集。

我們只需要訪問通過get_data()函數(shù)可以獲得的異常數(shù)據(jù)。

df = get_data(‘a(chǎn)nomaly')
df.head()

探索和描述此數(shù)據(jù)集以查找缺失值并獲得統(tǒng)計(jì)分布。

df.describe()
df.info()

我們可以注意到數(shù)據(jù)集沒有任何缺失值。

探索性異常檢測(cè)分析

現(xiàn)在我們可以使用各種可視化方法來解釋數(shù)據(jù)集中的異常值和異常。

我們可以從 Swarm 圖開始

Swarm 圖

使用melt()函數(shù)獲取數(shù)據(jù)集的Swarm圖。

plt.rcParams["figure.figsize"] = (10,8)
sns.swarmplot(x="variable", y="value", data=pd.melt(df))
plt.show()

這是我們所有列的Swarm圖

箱形圖

通過箱形圖可視化數(shù)據(jù)集,這讓我們清楚地了解大部分?jǐn)?shù)據(jù)所在的位置。

sns.boxplot(x="variable", y="value", data=pd.melt(df))
plt.show()

這些圖將幫助我們感知我們的模型是否能夠跟蹤它們。

散點(diǎn)圖

我們可以通過散點(diǎn)圖確定兩個(gè)特征之間的線性關(guān)系。此處明確定義了Col1Col2之間的關(guān)系。

sns.scatterplot(data=df, x="Col1", y='Col2')

我們也可以嘗試不同的特征。探索各種特征如何相互關(guān)聯(lián)。

sns.scatterplot(data=df, x="Col3", y='Col4')

這些圖表明數(shù)據(jù)之間沒有線性關(guān)系。現(xiàn)在讓我們使用 Seaborn 成對(duì)分析所有特征之間的關(guān)系。

sns.pairplot(df)

該成對(duì)圖確定了不同列之間的關(guān)系以及它們?nèi)绾闻c直方圖一起以多種方式區(qū)分值。

通過這種方式,我們可以為我們的模型解釋多個(gè)維度的邊界。

df1 = df.melt(‘Col1', var_name='cols', value_name='vals')
g = sns.factorplot(x=”Col1", y=”vals”, hue='cols', data=df1)

異常檢測(cè)

為異常檢測(cè)設(shè)置 PyCaret 環(huán)境。為此,我們可以使用 Pycaret 的異常檢測(cè)模塊,這是一個(gè)無(wú)監(jiān)督的機(jī)器學(xué)習(xí)模塊,用于識(shí)別數(shù)據(jù)中可能導(dǎo)致異常情況的異常值。

from pycaret.anomaly import *
setup = setup(df, session_id = 123)

指定會(huì)話 id,這會(huì)導(dǎo)致執(zhí)行后進(jìn)行處理。它會(huì)自動(dòng)解釋多種類型的變量,并允許我們通過按ENTER進(jìn)行確認(rèn)。

觀察我們的數(shù)據(jù)集由 10 個(gè)特征組成,每個(gè)特征 1000 行。我們可以執(zhí)行各種插補(bǔ)——數(shù)字和分類或歸一化數(shù)據(jù)。但是我們不需要在我們的數(shù)據(jù)集中進(jìn)行這樣的轉(zhuǎn)換,所以讓我們繼續(xù)!

用幾行代碼執(zhí)行所有這些計(jì)算顯示了PyCaret庫(kù)的美妙之處。

模型創(chuàng)建

從模型庫(kù)中選擇最佳模型并創(chuàng)建用于異常檢測(cè)的模型。我們可以使用model()函數(shù)顯示模型列表。

models()

我們可以看到列出了許多流行的算法,例如隔離森林和 k 最近鄰。

隔離森林

使用create_model()函數(shù)創(chuàng)建隔離森林模型。隔離森林算法通過隨機(jī)選擇一個(gè)特征,然后隨機(jī)選擇最大值和最小值之間的分割值來區(qū)分觀察。

iforest = create_model('iforest')
print(iforest)

因此,異常分?jǐn)?shù)被確定為分離給定觀察所需的條件數(shù)量。

局部異常因子

它是一種無(wú)監(jiān)督異常檢測(cè)方法的算法,計(jì)算數(shù)據(jù)點(diǎn)相對(duì)于其鄰居的局部密度偏差。

lof = create_model('lof')
print(lof)

K最近鄰

KNN 是一種非參數(shù)惰性學(xué)習(xí)算法,用于根據(jù)相似性和各種距離度量對(duì)數(shù)據(jù)進(jìn)行分類。它提供了一種簡(jiǎn)單而可靠的方法來檢測(cè)異常。

knn = create_model('knn')
print(knn)neighbours

比較模型中的異常

繼續(xù)我們的任務(wù),我們現(xiàn)在可以觀察模型確定的異常情況。傳統(tǒng)上,我們必須手動(dòng)設(shè)置不同的參數(shù)。

但是通過使用 PyCaret,我們可以通過分配的模型函數(shù)來分配結(jié)果。我們將從隔離森林模型開始。

iforest_results = assign_model(iforest)
iforest_results.head()

assign_model()函數(shù)返回一個(gè)檢測(cè)異常的數(shù)據(jù)幀,異常值的存在標(biāo)記為 1,非異常值標(biāo)記為 0,以及異常分?jǐn)?shù)。

同樣,我們也可以分配其他模型。所以可以進(jìn)行比較。

lof_results = assign_model(lof)
lof_results.head()

比較上述模型我們可以看到,隔離森林已經(jīng)將第二行視為異常,但局部異常因子并未將其視為異常。但不同算法的異常得分不同。

對(duì)于 k 個(gè)最近鄰,預(yù)測(cè)分?jǐn)?shù)與隔離森林的預(yù)測(cè)分?jǐn)?shù)非常相似。

knn_results = assign_model(knn)
knn_results.head()

按每個(gè)模型過濾異常,這表明 iforest 模型將 1000 行中的 50 行視為異常。

iforest_anomaly=iforest_results[iforest_results['Anomaly']==1]
iforest_anomaly.shape

同樣,檢查L(zhǎng)OF和KNN,我們可以看到它們都考慮了50個(gè)異常。必須使用不同的計(jì)算方法來查找異常值。

lof_anomaly=lof_results[lof_results['Anomaly']==1]
lof_anomaly.shape
knn_anomaly=knn_results[knn_results['Anomaly']==1]
knn_anomaly.shape

根據(jù)以上結(jié)果,我們可以得出結(jié)論,1000 個(gè)異常中最有可能有 50 個(gè)。

驗(yàn)證的一種方法是分析它們中的哪一個(gè)更適合于對(duì)模型標(biāo)記為離群值的數(shù)據(jù)進(jìn)行分析,并比較它們對(duì)測(cè)試數(shù)據(jù)的影響,或者進(jìn)行分析,看看它們是否位于決策邊界內(nèi)。

解釋和可視化

可視化是以創(chuàng)造性和獨(dú)立的方式解釋手頭信息的最便捷方式。

讓我們首先從 PyCaret 庫(kù)外部創(chuàng)建視覺效果,這將突出 PyCaret 庫(kù)的好處,并使我們能夠了解plot_model函數(shù)如何更具交互性。

from yellowbrick.features import Manifold
dfr = iforest_results['Anomaly']
viz = Manifold(manifold="tsne")
viz.fit_transform(df, dfr)
viz.show()

我們可以看到,隔離森林在多個(gè)維度上確定的大多數(shù)異常通常來自不同的集群。

現(xiàn)在在PyCaret 中為 KNN使用plot_model() 函數(shù),它將為異常值創(chuàng)建一個(gè) 3D 圖,在其中我們可以看到為什么某些特征被視為異常。

plot_model(knn)

我們可以在任何維度上移動(dòng)它以查看和指出異常。這個(gè) 3D 繪圖有助于我們更好地查看它。KNN 圖顯示大多數(shù)異常值是那些不屬于任何集群的異常值。所以這很好!

其他兩個(gè)模型也可以這樣做。

plot_model(iforest)

很明顯,數(shù)據(jù)集被分成了四個(gè)不同的集群,所以這些組之外的任何東西都肯定是異常的。

異常并不總是壞兆頭!有時(shí)它們?cè)诮忉尳Y(jié)果或數(shù)據(jù)分析方面非常有用。這些可用于解決不同的數(shù)據(jù)科學(xué)用例。

接下來是第三種模式。線性離群因子,我們可以用一個(gè)不同的圖來實(shí)驗(yàn),創(chuàng)造一個(gè)2D圖。

我們可以放大這個(gè)二維圖來查看哪些點(diǎn)被認(rèn)為是異常值。

可以再次為配對(duì)圖創(chuàng)建另一個(gè)視覺效果,現(xiàn)在使用異常來查看哪些點(diǎn)將被視為異常。

sns.pairplot(lof_results, hue = "Anomaly")

最后,我們可以保存模型。可以保存任何合適的模型。這里我們保存了 iforest 模型。

save_model(iforest,'IForest_Model')

模型與示例數(shù)據(jù)和日志一起成功保存。

尾注

這標(biāo)志著我們關(guān)于異常檢測(cè)的動(dòng)手項(xiàng)目的結(jié)束。我們已經(jīng)討論了 PyCaret 庫(kù)的用例和實(shí)現(xiàn),以及它如何用于異常檢測(cè)。PyCaret 是一個(gè)快速可靠的機(jī)器學(xué)習(xí)庫(kù),通常被數(shù)據(jù)科學(xué)家用來解決復(fù)雜的業(yè)務(wù)問題。在創(chuàng)建可部署模型的同時(shí),可以擴(kuò)展該項(xiàng)目進(jìn)行進(jìn)一步的實(shí)驗(yàn)和探索。

以上就是詳解使用Python+Pycaret進(jìn)行異常檢測(cè)的詳細(xì)內(nèi)容,更多關(guān)于Python Pycaret異常檢測(cè)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 對(duì)Python Class之間函數(shù)的調(diào)用關(guān)系詳解

    對(duì)Python Class之間函數(shù)的調(diào)用關(guān)系詳解

    今天小編就為大家分享一篇對(duì)Python Class之間函數(shù)的調(diào)用關(guān)系詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • 實(shí)例講解Python 迭代器與生成器

    實(shí)例講解Python 迭代器與生成器

    這篇文章主要介紹了Python 迭代器與生成器的相關(guān)資料,文中示例代碼非常詳細(xì),幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • Python3之簡(jiǎn)單搭建自帶服務(wù)器的實(shí)例講解

    Python3之簡(jiǎn)單搭建自帶服務(wù)器的實(shí)例講解

    今天小編就為大家分享一篇Python3之簡(jiǎn)單搭建自帶服務(wù)器的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • python獲取中文字符串長(zhǎng)度的方法

    python獲取中文字符串長(zhǎng)度的方法

    今天小編就為大家分享一篇python獲取中文字符串長(zhǎng)度的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-11-11
  • python 對(duì)象真假值的實(shí)例(哪些視為False)

    python 對(duì)象真假值的實(shí)例(哪些視為False)

    這篇文章主要介紹了python 對(duì)象真假值的實(shí)例(哪些視為False),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • django接入新浪微博OAuth的方法

    django接入新浪微博OAuth的方法

    這篇文章主要介紹了django接入新浪微博OAuth的方法,實(shí)例分析了django針對(duì)新浪微博OAuth接口的接入技巧,需要的朋友可以參考下
    2015-06-06
  • python基于twisted框架編寫簡(jiǎn)單聊天室

    python基于twisted框架編寫簡(jiǎn)單聊天室

    這篇文章主要為大家詳細(xì)介紹了python基于twisted框架編寫簡(jiǎn)單聊天室,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • 使用Python實(shí)現(xiàn)七大排序算法的代碼實(shí)例

    使用Python實(shí)現(xiàn)七大排序算法的代碼實(shí)例

    這篇文章主要介紹了使用Python實(shí)現(xiàn)七大排序算法的代碼實(shí)例,所謂排序,就是使一串記錄,按照其中的某個(gè)或某些關(guān)鍵字的大小,遞增或遞減的排列起來的操作,需要的朋友可以參考下
    2023-07-07
  • 詳解Python 中的短路評(píng)估

    詳解Python 中的短路評(píng)估

    短路是指當(dāng)表達(dá)式的真值已經(jīng)確定時(shí)終止布爾運(yùn)算,Python 解釋器以從左到右的方式計(jì)算表達(dá)式,這篇文章主要介紹了Python 中的短路評(píng)估,需要的朋友可以參考下
    2023-06-06
  • Pytorch中關(guān)于nn.Conv2d()參數(shù)的使用

    Pytorch中關(guān)于nn.Conv2d()參數(shù)的使用

    這篇文章主要介紹了Pytorch中關(guān)于nn.Conv2d()參數(shù)的使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06

最新評(píng)論