PyOD進(jìn)行異常值檢測使用實(shí)例
PyOD簡介
PyOD為異常值檢測提供了廣泛的算法集合,適用于有監(jiān)督和無監(jiān)督的場景。無論處理的是帶標(biāo)簽的數(shù)據(jù)還是未帶標(biāo)簽的數(shù)據(jù),PyOD都提供了一系列技術(shù)來滿足特定需求。PyOD的突出特性之一是其用戶友好的API,使新手和有經(jīng)驗(yàn)的從業(yè)者都可以輕松的訪問它。
示例1:kNN
我們從一個(gè)簡單的例子開始,利用k近鄰(kNN)算法進(jìn)行離群值檢測。
首先從PyOD導(dǎo)入必要的模塊
from pyod.models.knn import KNN from pyod.utils.data import generate_data from pyod.utils.data import evaluate_print
我們生成具有預(yù)定義離群率的合成數(shù)據(jù)來模擬異常值。
contamination = 0.1 # percentage of outliers n_train = 200 # number of training points n_test = 100 # number of testing points X_train, X_test, y_train, y_test = generate_data( n_train=n_train, n_test=n_test, contamination=contamination)
初始化kNN檢測器,將其與訓(xùn)練數(shù)據(jù)擬合,并獲得離群值預(yù)測。
clf_name = 'KNN' clf = KNN() clf.fit(X_train)
使用ROC和Precision @ Rank n指標(biāo)評估訓(xùn)練模型在訓(xùn)練和測試數(shù)據(jù)集上的性能。
print("\nOn Training Data:") evaluate_print(clf_name, y_train, clf.decision_scores_) print("\nOn Test Data:") evaluate_print(clf_name, y_test, clf.decision_function(X_test))
最后可以使用內(nèi)置的可視化功能可視化離群檢測結(jié)果。
from pyod.utils.data import visualize visualize(clf_name, X_train, y_train, X_test, y_test, clf.labels_, clf.predict(X_test), show_figure=True, save_figure=False)
這是一個(gè)簡單的用法示例
示例2 模型集成
異常值檢測有時(shí)會受到模型不穩(wěn)定性的影響,特別是在無監(jiān)督的情況下。所以PyOD提供了模型組合技術(shù)來提高魯棒性。
import numpy as np from sklearn.model_selection import train_test_split from scipy.io import loadmat from pyod.models.knn import KNN from pyod.models.combination import aom, moa, average, maximization, median from pyod.utils.utility import standardizer from pyod.utils.data import generate_data from pyod.utils.data import evaluate_print X, y = generate_data(train_only=True) # load data X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.4) # standardizing data for processing X_train_norm, X_test_norm = standardizer(X_train, X_test) n_clf = 20 # number of base detectors # Initialize 20 base detectors for combination k_list = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 130, 140, 150, 160, 170, 180, 190, 200] train_scores = np.zeros([X_train.shape[0], n_clf]) test_scores = np.zeros([X_test.shape[0], n_clf]) print('Combining {n_clf} kNN detectors'.format(n_clf=n_clf)) for i in range(n_clf): k = k_list[i] clf = KNN(n_neighbors=k, method='largest') clf.fit(X_train_norm) train_scores[:, i] = clf.decision_scores_ test_scores[:, i] = clf.decision_function(X_test_norm) # Decision scores have to be normalized before combination train_scores_norm, test_scores_norm = standardizer(train_scores, test_scores) # Combination by average y_by_average = average(test_scores_norm) evaluate_print('Combination by Average', y_test, y_by_average) # Combination by max y_by_maximization = maximization(test_scores_norm) evaluate_print('Combination by Maximization', y_test, y_by_maximization) # Combination by median y_by_median = median(test_scores_norm) evaluate_print('Combination by Median', y_test, y_by_median) # Combination by aom y_by_aom = aom(test_scores_norm, n_buckets=5) evaluate_print('Combination by AOM', y_test, y_by_aom) # Combination by moa y_by_moa = moa(test_scores_norm, n_buckets=5) evaluate_print('Combination by MOA', y_test, y_by_moa)
如果上面代碼提示錯(cuò)誤,需要安裝combo包
pip install combo
總結(jié)
可以看到,PyOD進(jìn)行離群值檢測是非常方便的,從基本的kNN離群值檢測到模型組合,PyOD都提供了一個(gè)全面的整合,這使得我們可以輕松高效地處理異常值檢測任務(wù)。
最后pyod的文檔和官網(wǎng)
https://avoid.overfit.cn/post/9df020be7be84d759aeef2dfa8e4d8cd
以上就是PyOD進(jìn)行異常值檢測使用實(shí)例的詳細(xì)內(nèi)容,更多關(guān)于PyOD異常值檢測的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python復(fù)制Excel表格中指定數(shù)據(jù)若干次的方法
本文介紹基于Python語言,讀取Excel表格文件數(shù)據(jù),并基于其中某一列數(shù)據(jù)的值,將這一數(shù)據(jù)處于指定范圍的那一行加以復(fù)制,并將所得結(jié)果保存為新的Excel表格文件的方法,需要的朋友可以參考下2024-02-02python 下劃線的多種應(yīng)用場景總結(jié)
Python有很多地方使用下劃線,在不同場合下,有不同含義。本文總結(jié)Python語言編程中常用下劃線的地方,力圖一次搞懂下劃線的常見用法,感興趣的朋友快來一起看看吧2021-05-05Python識別設(shè)備和操作系統(tǒng)神器device_detector使用探究
這篇文章主要介紹了Python識別設(shè)備和操作系統(tǒng)神器device_detector庫使用探究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2024-01-01Python任務(wù)調(diào)度利器之APScheduler詳解
所謂的任務(wù)調(diào)度是指安排任務(wù)的執(zhí)行計(jì)劃,即何時(shí)執(zhí)行,怎么執(zhí)行等。這篇文章主要介紹了Python任務(wù)調(diào)度利器之APScheduler詳解,需要的朋友可以參考下2020-04-04Pygame游戲開發(fā)實(shí)例講解之圖形繪制與鍵鼠事件
這篇文章主要介紹了Pygame游戲開發(fā)中常用的圖形繪制與鍵鼠事件實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧2022-11-11Python分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)示例代碼
在Python中,分支結(jié)構(gòu)通過if、elif和else關(guān)鍵字來實(shí)現(xiàn)條件判斷,在使用if語句時(shí),程序會根據(jù)條件表達(dá)式的真假執(zhí)行相應(yīng)的代碼塊,這篇文章主要介紹了Python分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu),需要的朋友可以參考下2024-03-03python通用數(shù)據(jù)庫操作工具 pydbclib的使用簡介
這篇文章主要介紹了python通用數(shù)據(jù)庫操作工具 pydbclib的使用簡介,幫助大家更好的理解和使用python,感興趣的朋友可以了解下2020-12-12