<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
1.通過探索性異常檢測分析瞭解異常
2.設定 PyCaret 環境並嘗試準備任務的各種資料
3.比較效能並視覺化不同的異常檢測演演算法
異常檢測提供了在資料中發現模式、偏差和異常的途徑,這些模式、偏差和異常不限於模型的標準行為。異常檢測旨在確定資料中的異常情況。這些異常也被稱為資料集的異常值。
隨著資料呈指數級增長,分析資料並得出形成重要業務決策基礎的見解已成為一種普遍趨勢。我們不僅需要分析資料,還需要準確地解釋資料。找出異常並確定異常行為可以讓我們找到最佳解決方案。
異常檢測可以應用於各種領域。下面列出了其中一些。
許多機器學習演演算法可用於異常檢測,它在檢測和分類複雜資料集中的異常值方面起著至關重要的作用。
PyCaret是一個開源、低程式碼的 Python 機器學習庫,支援多種功能,例如在幾行程式碼中就可以為部署建模的資料準備。
PyCaret 提供的一些的功能包括 -
在你的 jupyter notebook 中安裝最新版本的 Pycaret 並開始使用!
pip3 install pycaret
讓我們從 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')
現在我們可以看到所有列出的具有預設機器學習任務的資料集。
我們只需要存取通過get_data()函數可以獲得的異常資料。
df = get_data(‘anomaly') df.head()
探索和描述此資料集以查詢缺失值並獲得統計分佈。
df.describe() df.info()
我們可以注意到資料集沒有任何缺失值。
現在我們可以使用各種視覺化方法來解釋資料集中的異常值和異常。
我們可以從 Swarm 圖開始
使用melt()函數獲取資料集的Swarm圖。
plt.rcParams["figure.figsize"] = (10,8) sns.swarmplot(x="variable", y="value", data=pd.melt(df)) plt.show()
這是我們所有列的Swarm圖
通過箱形圖視覺化資料集,這讓我們清楚地瞭解大部分資料所在的位置。
sns.boxplot(x="variable", y="value", data=pd.melt(df)) plt.show()
這些圖將幫助我們感知我們的模型是否能夠跟蹤它們。
我們可以通過散點圖確定兩個特徵之間的線性關係。此處明確定義了Col1和Col2之間的關係。
sns.scatterplot(data=df, x="Col1", y='Col2')
我們也可以嘗試不同的特徵。探索各種特徵如何相互關聯。
sns.scatterplot(data=df, x="Col3", y='Col4')
這些圖表明資料之間沒有線性關係。現在讓我們使用 Seaborn 成對分析所有特徵之間的關係。
sns.pairplot(df)
該成對圖確定了不同列之間的關係以及它們如何與直方圖一起以多種方式區分值。
通過這種方式,我們可以為我們的模型解釋多個維度的邊界。
df1 = df.melt(‘Col1', var_name='cols', value_name='vals') g = sns.factorplot(x=」Col1", y=」vals」, hue='cols', data=df1)
為異常檢測設定 PyCaret 環境。為此,我們可以使用 Pycaret 的異常檢測模組,這是一個無監督的機器學習模組,用於識別資料中可能導致異常情況的異常值。
from pycaret.anomaly import * setup = setup(df, session_id = 123)
指定對談 id,這會導致執行後進行處理。它會自動解釋多種型別的變數,並允許我們通過按ENTER進行確認。
觀察我們的資料集由 10 個特徵組成,每個特徵 1000 行。我們可以執行各種插補——數位和分類或歸一化資料。但是我們不需要在我們的資料集中進行這樣的轉換,所以讓我們繼續!
用幾行程式碼執行所有這些計算顯示了PyCaret庫的美妙之處。
從模型庫中選擇最佳模型並建立用於異常檢測的模型。我們可以使用model()函數顯示模型列表。
models()
我們可以看到列出了許多流行的演演算法,例如隔離森林和 k 最近鄰。
使用create_model()函數建立隔離森林模型。隔離森林演演算法通過隨機選擇一個特徵,然後隨機選擇最大值和最小值之間的分割值來區分觀察。
iforest = create_model('iforest') print(iforest)
因此,異常分數被確定為分離給定觀察所需的條件數量。
它是一種無監督異常檢測方法的演演算法,計算資料點相對於其鄰居的區域性密度偏差。
lof = create_model('lof') print(lof)
KNN 是一種非引數惰性學習演演算法,用於根據相似性和各種距離度量對資料進行分類。它提供了一種簡單而可靠的方法來檢測異常。
knn = create_model('knn') print(knn)neighbours
繼續我們的任務,我們現在可以觀察模型確定的異常情況。傳統上,我們必須手動設定不同的引數。
但是通過使用 PyCaret,我們可以通過分配的模型函數來分配結果。我們將從隔離森林模型開始。
iforest_results = assign_model(iforest) iforest_results.head()
assign_model()函數返回一個檢測異常的資料框,異常值的存在標記為 1,非異常值標記為 0,以及異常分數。
同樣,我們也可以分配其他模型。所以可以進行比較。
lof_results = assign_model(lof) lof_results.head()
比較上述模型我們可以看到,隔離森林已經將第二行視為異常,但區域性異常因子並未將其視為異常。但不同演演算法的異常得分不同。
對於 k 個最近鄰,預測分數與隔離森林的預測分數非常相似。
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
根據以上結果,我們可以得出結論,1000 個異常中最有可能有 50 個。
驗證的一種方法是分析它們中的哪一個更適合於對模型標記為離群值的資料進行分析,並比較它們對測試資料的影響,或者進行分析,看看它們是否位於決策邊界內。
視覺化是以創造性和獨立的方式解釋手頭資訊的最便捷方式。
讓我們首先從 PyCaret 庫外部建立視覺效果,這將突出 PyCaret 庫的好處,並使我們能夠了解plot_model函數如何更具互動性。
from yellowbrick.features import Manifold dfr = iforest_results['Anomaly'] viz = Manifold(manifold="tsne") viz.fit_transform(df, dfr) viz.show()
我們可以看到,隔離森林在多個維度上確定的大多數異常通常來自不同的叢集。
現在在PyCaret 中為 KNN使用plot_model() 函數,它將為異常值建立一個 3D 圖,在其中我們可以看到為什麼某些特徵被視為異常。
plot_model(knn)
我們可以在任何維度上移動它以檢視和指出異常。這個 3D 繪圖有助於我們更好地檢視它。KNN 圖顯示大多數異常值是那些不屬於任何叢集的異常值。所以這很好!
其他兩個模型也可以這樣做。
plot_model(iforest)
很明顯,資料集被分成了四個不同的叢集,所以這些組之外的任何東西都肯定是異常的。
異常並不總是壞兆頭!有時它們在解釋結果或資料分析方面非常有用。這些可用於解決不同的資料科學用例。
接下來是第三種模式。線性離群因子,我們可以用一個不同的圖來實驗,創造一個2D圖。
我們可以放大這個二維圖來檢視哪些點被認為是異常值。
可以再次為配對圖建立另一個視覺效果,現在使用異常來檢視哪些點將被視為異常。
sns.pairplot(lof_results, hue = "Anomaly")
最後,我們可以儲存模型。可以儲存任何合適的模型。這裡我們儲存了 iforest 模型。
save_model(iforest,'IForest_Model')
模型與範例資料和紀錄檔一起成功儲存。
這標誌著我們關於異常檢測的動手專案的結束。我們已經討論了 PyCaret 庫的用例和實現,以及它如何用於異常檢測。PyCaret 是一個快速可靠的機器學習庫,通常被資料科學家用來解決複雜的業務問題。在建立可部署模型的同時,可以擴充套件該專案進行進一步的實驗和探索。
以上就是詳解使用Python+Pycaret進行異常檢測的詳細內容,更多關於Python Pycaret異常檢測的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45