最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python+Sklearn實(shí)現(xiàn)異常檢測(cè)

 更新時(shí)間:2022年12月22日 08:56:42   作者:Python數(shù)據(jù)開(kāi)發(fā)  
這篇文章主要為大家詳細(xì)介紹了Python如何利用Sklearn實(shí)現(xiàn)異常檢測(cè),文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Python有一定的幫助,感興趣的可以跟隨小編一起學(xué)習(xí)一下

離群檢測(cè) 與 新奇檢測(cè)

很多應(yīng)用場(chǎng)景都需要能夠確定樣本是否屬于與現(xiàn)有的分布,或者應(yīng)該被視為不同的分布。

  • 離群檢測(cè)(Outlier detection):訓(xùn)練數(shù)據(jù)包含離群值,這些離群值被定義為與其他觀(guān)察值相差甚遠(yuǎn)的觀(guān)察值。
  • 新奇檢測(cè) (Novelty detection):訓(xùn)練數(shù)據(jù)沒(méi)有離群點(diǎn),需要觀(guān)察新的樣本是否包含離群點(diǎn)。

離群檢測(cè)和新穎性檢測(cè)都用于異常檢測(cè),其中人們對(duì)檢測(cè)異?;虿粚こ5挠^(guān)察感興趣。離群檢測(cè)也稱(chēng)為無(wú)監(jiān)督異常檢測(cè),新奇檢測(cè)稱(chēng)為半監(jiān)督異常檢測(cè)。

在離群檢測(cè)中離群值不能形成密集的集群,因?yàn)榭梢约僭O(shè)離群值位于低密度區(qū)域。相反在新穎性檢測(cè)中,新穎性處于訓(xùn)練數(shù)據(jù)的低密度區(qū)域。

Sklearn 中支持的方法

如下圖為scikit-learn 中異常值檢測(cè)算法的比較,IsolationForest和LocalOutlierFactor在此處考慮的數(shù)據(jù)集上表現(xiàn)相當(dāng)不錯(cuò)。而OneClassSVM對(duì)離群值很敏感,因此在離群值檢測(cè)方面表現(xiàn)不佳。

但OneClassSVM仍可用于異常值檢測(cè),但需要微調(diào)其超參數(shù)nu以處理異常值并防止過(guò)度擬合。SGDOneClassSVM提供了復(fù)雜度更低的實(shí)現(xiàn)。而EllipticEnvelope假設(shè)數(shù)據(jù)是高斯分布的并學(xué)習(xí)一個(gè)橢圓。

  • ensemble.IsolationForest
  • neighbors.LocalOutlierFactor
  • svm.OneClassSVM
  • linear_model.SGDOneClassSVM
  • covariance.EllipticEnvelope

孤立森林 IsolationForest

孤立森林(Isolation Forest)是一種異常值檢測(cè)算法。它通過(guò)建立多棵決策樹(shù),并在每棵樹(shù)中隨機(jī)選取一個(gè)特征將數(shù)據(jù)集劃分為兩個(gè)子集來(lái)實(shí)現(xiàn)異常值檢測(cè)。與其他決策樹(shù)算法不同的是,孤立森林算法并不是用來(lái)預(yù)測(cè)目標(biāo)變量的值的,而是用來(lái)預(yù)測(cè)數(shù)據(jù)點(diǎn)是否是異常值。

為了計(jì)算出每個(gè)數(shù)據(jù)點(diǎn)是否是異常值,孤立森林算法對(duì)每個(gè)數(shù)據(jù)點(diǎn)計(jì)算出一個(gè)分?jǐn)?shù),稱(chēng)為異常分?jǐn)?shù)。數(shù)據(jù)點(diǎn)的異常分?jǐn)?shù)越低,說(shuō)明它越可能是一個(gè)異常值。通常情況下,我們可以設(shè)定一個(gè)閾值,如果數(shù)據(jù)點(diǎn)的異常分?jǐn)?shù)低于這個(gè)閾值,就認(rèn)為這是一個(gè)異常值。

關(guān)鍵參數(shù):

  • n_estimators:學(xué)習(xí)器個(gè)數(shù)
  • max_samples:采樣最大樣本個(gè)數(shù)
  • max_features:采樣最大特征個(gè)數(shù)
from sklearn.ensemble import IsolationForest  
X = [[-1.1], [0.3], [0.5], [100]]  
clf = IsolationForest(random_state=0).fit(X)  
  
# 預(yù)測(cè)特定樣本是否為異常值  
# 對(duì)于每個(gè)觀(guān)察值,返回 (+1 或 -1) 分別代表正常樣本和異常值  
clf.predict([[0.1], [0], [90]])  

Local Outlier Factor

Local Outlier Factor (LOF) 是一種用于檢測(cè)數(shù)據(jù)集中異?;虍惓?shù)據(jù)點(diǎn)的算法。LOF 背后的基本思想是測(cè)量給定數(shù)據(jù)點(diǎn)與其相鄰數(shù)據(jù)點(diǎn)的局部偏差。如果一個(gè)點(diǎn)與其相鄰點(diǎn)有顯著差異,則將其視為異常值。一個(gè)點(diǎn)被視為離群值的程度通過(guò)稱(chēng)為局部離群值因子的度量來(lái)量化。

首先確定該點(diǎn)鄰居的密度,密度計(jì)算方法是將給定距離內(nèi)的鄰居數(shù)除以具有該距離的球體的體積。較高鄰居密度的點(diǎn)被認(rèn)為比具有較低鄰居密度的點(diǎn)更不離群。然后將一個(gè)點(diǎn)的 LOF 計(jì)算為該點(diǎn)與其相鄰點(diǎn)的密度之比。具有高 LOF 值的點(diǎn)被認(rèn)為是異常值。

關(guān)鍵參數(shù):

  • n_neighbors:最近鄰樣本個(gè)數(shù)
  • metric:距離計(jì)算方法
import numpy as np  
from sklearn.neighbors import LocalOutlierFactor  
X = [[-1.1], [0.2], [101.1], [0.3]]  
clf = LocalOutlierFactor(n_neighbors=2)  
  
# 異常/離群值返回 -1,離群值返回 +1  
clf.fit_predict(X)  

OneClassSVM

OneClassSVM是一種用于檢測(cè)異常點(diǎn)的算法,是一種無(wú)監(jiān)督學(xué)習(xí)算法。決策邊界將數(shù)據(jù)點(diǎn)分為兩類(lèi):內(nèi)點(diǎn)和外點(diǎn)。非離群點(diǎn)是與訓(xùn)練集中的大多數(shù)點(diǎn)相似的點(diǎn),而離群點(diǎn)是與訓(xùn)練集中的大多數(shù)點(diǎn)顯著不同的點(diǎn)。

為了學(xué)習(xí)決策邊界,OneClassSVM最大化邊界和內(nèi)點(diǎn)之間的距離,最終找到合適的超平面。這個(gè)超平面可以最大化內(nèi)點(diǎn)和決策邊界之間的邊距。一旦學(xué)習(xí)了決策邊界,就可以使用它來(lái)將新點(diǎn)分類(lèi)為內(nèi)點(diǎn)或異常點(diǎn)。

關(guān)鍵參數(shù):

  • kernel:SVM內(nèi)核類(lèi)型
  • nu:訓(xùn)練誤差分?jǐn)?shù)的上限
from sklearn.svm import OneClassSVM  
X = [[0], [0.44], [0.45], [0.46], [1]]  
clf = OneClassSVM(gamma='auto').fit(X)  
  
# 異常/離群值返回 -1,離群值返回 +1  
clf.predict(X)  

在實(shí)際使用中OneClassSVM速度較慢,因此可以考慮使用隨機(jī)梯度下降求解線(xiàn)性的SVM來(lái)代替,也就是SGDOneClassSVM。

Elliptic Envelope

橢圓包絡(luò)(Elliptic Envelope)是一種檢測(cè)數(shù)據(jù)集中異常或異常數(shù)據(jù)點(diǎn)的方法。它是一種無(wú)監(jiān)督學(xué)習(xí)方法,通過(guò)將橢圓擬合到訓(xùn)練集中的數(shù)據(jù)點(diǎn)來(lái)工作,但假設(shè)大多數(shù)點(diǎn)遵循高斯分布。

為了擬合橢圓,橢圓包絡(luò)估計(jì)數(shù)據(jù)點(diǎn)的均值和協(xié)方差,并使用這些估計(jì)值來(lái)確定橢圓的形狀和方向。一旦學(xué)習(xí)了橢圓,它就可以用來(lái)將新點(diǎn)分類(lèi)為內(nèi)點(diǎn)或異常點(diǎn)。

import numpy as np  
from sklearn.covariance import EllipticEnvelope  
true_cov = np.array([[.8, .3],  
                     [.3, .4]])  
X = np.random.RandomState(0).multivariate_normal(mean=[0, 0],  
                                                 cov=true_cov,  
                                                 size=500)  
cov = EllipticEnvelope(random_state=0).fit(X)  
# predict returns 1 for an inlier and -1 for an outlier  
cov.predict([[0, 0],  
             [3, 3]])  

到此這篇關(guān)于Python+Sklearn實(shí)現(xiàn)異常檢測(cè)的文章就介紹到這了,更多相關(guān)Python Sklearn異常檢測(cè)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 一篇文章學(xué)會(huì)兩種將python打包成exe的方式

    一篇文章學(xué)會(huì)兩種將python打包成exe的方式

    最近有部分小伙伴問(wèn)我,python 寫(xiě)的項(xiàng)目可不可以打包成exe程序,放到?jīng)]有python環(huán)境上的電腦中執(zhí)行? 答案當(dāng)然是可以的,下面這篇文章主要給大家介紹了如何通過(guò)一篇文章學(xué)會(huì)兩種將pyton打包成exe的方式,需要的朋友可以參考下
    2021-11-11
  • 在Python中使用列表生成式的教程

    在Python中使用列表生成式的教程

    這篇文章主要介紹了在Python中使用列表生成式的教程,列表生成式是Python具有的重要特性,需要的朋友可以參考下
    2015-04-04
  • ?python中字符串的常見(jiàn)操作總結(jié)(二)

    ?python中字符串的常見(jiàn)操作總結(jié)(二)

    這篇文章主要介紹了python中字符串的常見(jiàn)操作,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-07-07
  • 解決nohup重定向python輸出到文件不成功的問(wèn)題

    解決nohup重定向python輸出到文件不成功的問(wèn)題

    今天小編就為大家分享一篇解決nohup重定向python輸出到文件不成功的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05
  • pytorch 多個(gè)反向傳播操作

    pytorch 多個(gè)反向傳播操作

    這篇文章主要介紹了pytorch 多個(gè)反向傳播操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-05-05
  • python實(shí)現(xiàn)畫(huà)循環(huán)圓

    python實(shí)現(xiàn)畫(huà)循環(huán)圓

    今天小編就為大家分享一篇python實(shí)現(xiàn)畫(huà)循環(huán)圓,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-11-11
  • python獲取當(dāng)前用戶(hù)的主目錄路徑方法(推薦)

    python獲取當(dāng)前用戶(hù)的主目錄路徑方法(推薦)

    下面小編就為大家?guī)?lái)一篇python獲取當(dāng)前用戶(hù)的主目錄路徑方法(推薦)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-01-01
  • 初學(xué)python數(shù)組的處理代碼

    初學(xué)python數(shù)組的處理代碼

    初學(xué)python數(shù)組的處理代碼,學(xué)習(xí)python的朋友可以參考下。
    2011-01-01
  • python如何制作英文字典

    python如何制作英文字典

    這篇文章主要為大家詳細(xì)介紹了python如何制作英文字典,添加單詞的意思,查詢(xún),退出,建立單詞文件,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-06-06
  • linux安裝python修改默認(rèn)python版本方法

    linux安裝python修改默認(rèn)python版本方法

    在本文中我們給大家總結(jié)了關(guān)于linux安裝python修改默認(rèn)python版本的方法和相關(guān)知識(shí)點(diǎn),需要的讀者們參考下。
    2019-03-03

最新評(píng)論

黄梅县| 黎城县| 吉木萨尔县| 当雄县| 晋宁县| 金山区| 五家渠市| 永德县| 郑州市| 德江县| 忻州市| 中牟县| 望江县| 中西区| 海林市| 西林县| 阿拉善左旗| 若羌县| 涟水县| 罗山县| 类乌齐县| 苏尼特右旗| 武汉市| 扎囊县| 白城市| 开化县| 建德市| 额济纳旗| 长乐市| 北票市| 定西市| 湄潭县| 仁化县| 安庆市| 东城区| 尖扎县| 黔西| 绥阳县| 无为县| 湟中县| 古蔺县|