異常值處理

2021-10-25 22:32:47 字數 3463 閱讀 8187

簡單來說,即在資料集中存在不合理的值,又稱離群點。

我們舉個例子,做客戶分析,發現客戶的年平均收入是80萬美元。 但是,有兩個客戶的年收入是4美元和420萬美元。 這兩個客戶的年收入明顯不同於其他人,那這兩個觀察結果將被視為異常值。

每當我們遇到異常值時,處理這些異常值的理想方法就是找出引起這些異常值的原因。 處理它們的方法將取決於它們發生的原因, 異常值的原因可以分為兩大類:

人為錯誤

自然錯誤

人為錯誤(如資料收集,記錄或輸入過程中導致的錯誤)會導致資料中的異常值。 例如:客戶的年收入是10萬美元,但意外地,資料輸入操作附加乙個零。 現在的收入就是100萬美元,是10倍。 顯然,與其他人相比,這將是異常值。

這是異常值最常見的**。 當使用的測量儀器出現故障時,會引起這種情況。 例如:有10台稱重機。 其中9個是正確的,1個是錯誤的。 故障機器上的人員測量重量將高於或低於組內其餘人員。 在故障機器上測量的重量可能導致異常值。

異常值的另乙個原因是實驗誤差。 例如:在7名跑步者的100公尺衝刺中,有一名選手錯過了跑的口令,讓他開始延遲。 因此,這使得跑步者的跑步時間比其他跑步者要多, 總執行時間可能是乙個異常值。

通常在自我報告的措施中涉及敏感資料。 例如:通常青少年報告酒量,只有其中一小部分報告實際價值,這裡的實際值可能看起來像異常值,因為其餘的青少年正在假值。

無論何時執行資料探勘,我們從多個**提取資料。 某些操作或提取錯誤可能會導致資料集中的異常值。

例如,衡量運動員的身高,錯誤地在樣品中包括幾名籃球運動員。 這種包含可能會導致資料集中的異常值。

當異常值不是人為的(由於錯誤),它是乙個自然的異常值。 例如:注意到其中一家著名的保險公司,前50名財務顧問的表現遠遠高於其他人。 令人驚訝的是,這不是由於任何錯誤。 因此,每當與顧問一起執行任何資料探勘活動時,我們都會分別對待此細分。

對屬性值進行乙個描述性的統計,從而檢視哪些值是不合理的。比如對年齡這個屬性進行規約:年齡的區間在[0:200],如果樣本中的年齡值不再該區間範圍內,則表示該樣本的年齡屬性屬於異常值。

當資料服從正態分佈:

根據正態分佈的定義可知,距離平均值3δ之外的概率為 p(|x-μ|>3δ) <= 0.003 ,這屬於極小概率事件,在預設情況下我們可以認定,距離超過平均值3δ的樣本是不存在的。 因此,當樣本距離平均值大於3δ,則認定該樣本為異常值。

當資料不服從正態分佈:

當資料不服從正態分佈,可以通過遠離平均距離多少倍的標準差來判定,多少倍的取值需要根據經驗和實際情況來決定。

箱線圖(boxplot)也稱箱須圖(box-whisker plot),是利用資料中的五個統計量:最小值、第一四分位數、中位數、第三四分位數與最大值來描述資料的一種方法,它也可以粗略地看出資料是否具有有對稱性,分布的分散程度等資訊,特別可以用於對幾個樣本的比較。

具體含義如下,首先計算出第一四分位數(q1)、中位數、第三四分位數(q3)。

中位數我們都知道,就是將一組數字按從小到大的順序排序後,處於中間位置(也就是50%位置)的數字。

同理,第一四分位數、第三四分位數是按從小到大的順序排序後,處於25%、75%的數字。

令 iqr=q3−q1,那麼 q3+1.5(iqr) 和 q1−1.5(iqr) 之間的值就是可接受範圍內的數值,這兩個值之外的數認為是異常值。

在q3+1.5iqr(四分位距)和q1-1.5iqr處畫兩條與中位線一樣的線段,這兩條線段為異常值截斷點,稱其為內限;在q3+3iqr和q1-3iqr處畫兩條線段,稱其為外限。

處於內限以外位置的點表示的資料都是異常值,其中在內限與外限之間的異常值為溫和的異常值(mild outliers),在外限以外的為極端的異常值(li)的異常值extreme outliers。這種異常值的檢測方法叫做tukey』s method。

從矩形盒兩端邊向外各畫一條線段直到不是異常值的最遠點 表示該批資料正常值的分布區間點,示該批資料正常值的分布區間。

一般用「〇」標出溫和的異常值,用「*」標出極端的異常值。

首先我們定義下上四分位和下四分位。

上四分位我們設為 u,表示的是所有樣本中只有1/4的數值大於u

同理,下四分位我們設為 l,表示的是所有樣本中只有1/4的數值小於l

那麼,上下界又是什麼呢?

我們設上四分位與下四分位的插值為iqr,即:iqr=u-l

那麼,上界為 u+1.5iqr ,下界為: l - 1.5iqr

箱型圖選取異常值比較客觀,在識別異常值方面有一定的優越性。

1.刪除含有異常值的記錄

2.將異常值視為缺失值,交給缺失值處理方法來處理

3.用平均值來修正

4.不處理

import pandas as pd

import numpy as np

from collections import counter

defdetect_outliers

(df,n, features)

: outlier_indices =

for col in features:

q1 = np.percentile(df[col],25

) q3 = np.percentile(df[col],75

) iqr = q3 - q1

outlier_step =

1.5* iqr

outlier_list_col = df[

(df[col]

< q1 - outlier_step)

|(df[col]

> q3 + outlier_step)

].index

outlier_indices.extend(outlier_list_col)

outlier_indices = counter(outlier_indices)

multiple_outliers =

list

( k for k, v in outlier_indices.items(

)if v > n)

return multiple_outliers

df = pd.read_csv(

"data.csv"

)outliers_to_drop = detect_outliers(df,2[

"col1"

,"col2"

,"col3"

,"col4"])

df = df.drop(outliers_to_drop, axis=0)

.reset_index(drop=

true

)

異常值的處理

最近看到資料分析師秋招時關於異常值處理的問題,小白上網搜了以下,特在此做一下總結。何為異常值處理,小白要分異常值和處理兩步來介紹。異常值 對整體樣本資料結構表達時,通常抓住整體樣本一般性的性質,而在這些性質上與樣本整體表達不一致的點,稱其為異常點。異常值有好有壞,我們可以疾病 信用欺詐,網路攻擊等。...

異常值的處理

原理3西格瑪準則,對一組資料計算處理後,可以得到乙個置信區間,在此區間之外的部分應該被視為異常值。3西格瑪 0.68 0.95 0.99。處理方法 箱線圖 上下兩邊出現的點視為異常值.pandas中提供boxplot 方法繪製箱型圖 a 直接刪除 b 使用前後兩個邊界值的均值替換 c 不處理 d 視...

異常值檢查與處理

異常值,即在資料集中存在不合理的值,又稱離群點,如下所示 對屬性值進行乙個描述性的統計,從而檢視哪些值是不合理的。比如 對待乙個人的身高,不可能說有人的身高出現3m等以上的 如果是能使用影象直接顯示資料的話,可以直觀的直接直觀的從中得出異常值 當資料服從正態分佈 根據正態分佈的定義可知,距離平均值3...