亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python中尋找數(shù)據(jù)異常值的3種方法

 更新時(shí)間:2022年08月22日 11:34:14   作者:sgzqc???????  
這篇文章主要介紹了Python中尋找數(shù)據(jù)異常值的3種方法,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下

1. 引言

在數(shù)據(jù)處理、機(jī)器學(xué)習(xí)等領(lǐng)域,我們經(jīng)常需要對(duì)各式各樣的數(shù)據(jù)進(jìn)行處理,本文重點(diǎn)介紹三種非常簡(jiǎn)單的方法來(lái)檢測(cè)數(shù)據(jù)集中的異常值。 

2. 舉個(gè)栗子

為了方便介紹,這里給出我們的測(cè)試數(shù)據(jù)集,如下:

data = pd.DataFrame([
[87, 82, 85],
[81, 89, 75],
[86, 87, 69],
[91, 79, 86],
[88, 89, 82],
[0, 0, 0], # this guy missed the exam
[100, 100, 100],
], columns=["math", "science", "english"])

圖示如下:

假設(shè)這里我們有一堆學(xué)生的三門科目的考試成績(jī)——英語(yǔ)、數(shù)學(xué)和科學(xué)。這些學(xué)生通常表現(xiàn)很好,但其中一人錯(cuò)過(guò)了所有考試,三門科目都得了0分。在我們的分析中包括這個(gè)家伙可能會(huì)把事情搞砸,所以我們需要將他視為異常。

3. 孤立森林

使用孤立森林算法來(lái)求解上述異常值分析非常簡(jiǎn)單,代碼如下:

from sklearn.ensemble import IsolationForest
predictions = IsolationForest().fit(data).predict(data)
# predictions = array([ 1, 1, 1, 1, 1, -1, -1])

這里預(yù)測(cè)值針對(duì)每一行進(jìn)行預(yù)測(cè),預(yù)測(cè)結(jié)果為1或者-1;其中1表示該行不是異常值,而-1表示該行是異常值。在上述例子中,我們的孤立森林算法將數(shù)據(jù)中的最后2行都預(yù)測(cè)為異常值。

4. 橢圓模型擬合

使用孤橢圓模型擬合算法來(lái)求解上述異常值同樣非常方便,代碼如下:

from sklearn.covariance import EllipticEnvelope
predictions = EllipticEnvelope().fit(data).predict(data)
# predictions = array([ 1, 1, 1, 1, 1, -1, 1])

在上述代碼中,我們使用了另外一種異常值檢測(cè)算法來(lái)代替孤立森林算法,但是代碼保持不變。相似地,在預(yù)測(cè)值中,1表示非異常值,-1表示異常值。在上述情況下,我們的橢圓模型擬合算法只將倒數(shù)第二個(gè)學(xué)生作為異常值,即所有成績(jī)都為零的考生。

5. 局部異常因子算法

類似地,我們可以非常方便地使用局部異常因子算法來(lái)對(duì)上述數(shù)據(jù)進(jìn)行分析,樣例代碼如下:

from sklearn.neighbors import LocalOutlierFactor
predictions = LocalOutlierFactor(n_neighbors=5, novelty=True).fit(data).predict(data)
# array([ 1, 1, 1, 1, 1, -1, 1])

局部異常因子算法是sklearn上可用的另一種異常檢測(cè)算法,我們可以簡(jiǎn)單地在這里隨插隨用。同樣地,這里該算法僅將最后第二個(gè)數(shù)據(jù)行預(yù)測(cè)為異常值。

6. 挑選異常值檢測(cè)方法

那么,我們?nèi)绾螞Q定哪種異常檢測(cè)算法更好呢? 簡(jiǎn)而言之,沒有“最佳”的異常值檢測(cè)算法——我們可以將它們視為做相同事情的不同方式(并獲得略有不同的結(jié)果)

7. 異常值消除

在我們從上述三種異常檢測(cè)算法中的任何一種獲得異常預(yù)測(cè)后,我們現(xiàn)在可以執(zhí)行異常值的刪除。 這里我們只需保留異常預(yù)測(cè)為1的所有數(shù)據(jù)行,

代碼如下:

# predictions = array([ 1, 1, 1, 1, 1, -1, 1])
data2 = data[predictions==1]

結(jié)果如下:

8. 總結(jié)

本文重點(diǎn)介紹了在Python中使用sklearn機(jī)器學(xué)習(xí)庫(kù)來(lái)進(jìn)行異常值檢測(cè)的三種方法,并給出了相應(yīng)的代碼示例。

到此這篇關(guān)于Python中尋找數(shù)據(jù)異常值的3種方法的文章就介紹到這了,更多相關(guān)Python尋找數(shù)據(jù)異常值內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論