1. 程式人生 > 其它 >python異常值處理箱型圖_Python資料處理:異常值處理方法之3原則

python異常值處理箱型圖_Python資料處理:異常值處理方法之3原則

技術標籤:python異常值處理箱型圖

一、3σ原則定義 異常值是指樣本中的個別值,其數值明顯偏離其餘的觀測值。異常值也稱離群點,異常值的分析也稱為離群點的分析。 在進行機器學習過程中,需要對資料集進行異常值剔除或者修正,以便後續更好地進行資訊挖掘。 對於異常值的處理,3σ原則是最常使用的一種處理資料異常值的方法。那麼,什麼叫3σ原則呢? 3σ原則,又叫拉依達原則,它是指假設一組檢測資料中只含有隨機誤差,需要對其進行計算得到標準偏差,按一定概率確定一個區間,對於超過這個區間的誤差,就不屬於隨機誤差而是粗大誤差,需要將含有該誤差的資料進行剔除。 其侷限性: 僅侷限於對正態或近似正態分佈的樣本資料處理,它是以測量次數充分大為前提(樣本>10),當測量次數少的情形用準則剔除粗大誤差是不夠可靠的。 在測量次數較少的情況下,最好不要選用該準則。 3σ原則:
  • 數值分佈在(μ-σ,μ+σ)中的概率為0.6827
  • 數值分佈在(μ-2σ,μ+2σ)中的概率為0.9545
  • 數值分佈在(μ-3σ,μ+3σ)中的概率為0.9973
其中,μ為平均值,σ為標準差。 一般可以認為,資料Y的取值幾乎全部集中在(μ-3σ,μ+3σ)區間內,超出這個範圍的可能性僅佔不到0.3%,這些超出該範圍的資料可以認為是異常值。 對於正態分佈而言,資料大概分佈如圖所示: 28832df690348284ab1542bf67f9c160.png 深藍色區域是距平均值小於一個標準差之內的數值範圍。在正態分佈中,此範圍所佔比率為全部數值之68%,根據正態分佈,兩個標準差之內的比率合起來為95%;三個標準差之內的比率合起來為99%。 二、3σ原則作用 異常值檢測是機器學習中重要的一部分,它的任務是發現與大部分其他物件顯著不同的物件。大部分機器學習過程都將這種差異資訊視為噪聲而丟棄。 三、Python實現步驟 具體步驟如下:
  1. 首先需要保證資料列大致上服從正態分佈;

  2. 計算需要檢驗的資料列的平均值和標準差;

  3. 比較資料列的每個值與平均值的偏差是否超過3倍,如果超過3倍,則為異常值;

  4. 剔除異常值,得到規範的資料。

 1importnumpyasnp
2importpandasaspd
3fromscipyimportstats
4
5
6#建立資料
7data=[1222,87,77,92,68,80,78,84,77,81,80,80,77,92,86,
876,80,81,75,77,72,81,72,84,86,80,68,77,87,
976,77,78,92,75,80,78,123,3,1223,1232]
10df=pd.DataFrame(data,columns=['value'])
11
12#計算均值
13u=df['value'].mean()
14
15#計算標準差
16std=df['value'].std()
17
18print(stats.kstest(df,'norm',(u,std)))
19#此時,pvalue >0.05,不拒絕原假設。因此上面的資料服從正態分佈
20print('均值為:%.3f,標準差為:%.3f'%(u,std))
21print('------')
22
23
24#定義3σ法則識別異常值
25#識別異常值
26error=df[np.abs(df['value']-u)>3*std]
27#剔除異常值,保留正常的資料
28data_c=df[np.abs(df['value']-u)<=3*std]
29
30#輸出正常的資料
31print(data_c)
32#輸出異常資料
33print(error)