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

詳解使用Python+Pycaret進行異常檢測

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

概述

1.通過探索性異常檢測分析了解異常

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

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

介紹

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

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

異常檢測可以應用于各種領域。下面列出了其中一些。

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

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

為什么是PyCaret

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

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

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

學習目標

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

PyCaret 安裝

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

pip3 install pycaret

數(shù)據(jù)導入

讓我們從 PyCaret 預先配置的數(shù)據(jù)集中導入一個常見的異常檢測數(shù)據(jù)集,開始我們的動手項目。

導入必要的庫

首先,導入整個項目所需的必要庫。

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

導入數(shù)據(jù)集

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

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

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

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

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

df.describe()
df.info()

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

探索性異常檢測分析

現(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ù)集,這讓我們清楚地了解大部分數(shù)據(jù)所在的位置。

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

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

散點圖

我們可以通過散點圖確定兩個特征之間的線性關系。此處明確定義了Col1Col2之間的關系。

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

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

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

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

sns.pairplot(df)

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

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

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

異常檢測

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

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

指定會話 id,這會導致執(zhí)行后進行處理。它會自動解釋多種類型的變量,并允許我們通過按ENTER進行確認。

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

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

模型創(chuàng)建

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

models()

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

隔離森林

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

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

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

局部異常因子

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

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

K最近鄰

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

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

比較模型中的異常

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

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

iforest_results = assign_model(iforest)
iforest_results.head()

assign_model()函數(shù)返回一個檢測異常的數(shù)據(jù)幀,異常值的存在標記為 1,非異常值標記為 0,以及異常分數(shù)。

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

lof_results = assign_model(lof)
lof_results.head()

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

對于 k 個最近鄰,預測分數(shù)與隔離森林的預測分數(shù)非常相似。

knn_results = assign_model(knn)
knn_results.head()

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

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

同樣,檢查LOF和KNN,我們可以看到它們都考慮了50個異常。必須使用不同的計算方法來查找異常值。

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

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

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

解釋和可視化

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

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

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

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

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

plot_model(knn)

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

其他兩個模型也可以這樣做。

plot_model(iforest)

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

異常并不總是壞兆頭!有時它們在解釋結果或數(shù)據(jù)分析方面非常有用。這些可用于解決不同的數(shù)據(jù)科學用例。

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

我們可以放大這個二維圖來查看哪些點被認為是異常值。

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

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

最后,我們可以保存模型??梢员4嫒魏魏线m的模型。這里我們保存了 iforest 模型。

save_model(iforest,'IForest_Model')

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

尾注

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

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

相關文章

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

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

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

    實例講解Python 迭代器與生成器

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

    Python3之簡單搭建自帶服務器的實例講解

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

    python獲取中文字符串長度的方法

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

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

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

    django接入新浪微博OAuth的方法

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

    python基于twisted框架編寫簡單聊天室

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

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

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

    詳解Python 中的短路評估

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

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

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

最新評論