python中非法的準則 拉依達準則去除異常資料

2021-10-18 14:37:58 字數 1855 閱讀 7576

1.concept

拉依達準側(pau』ta criteron)是先假設一組資料中只含有隨機誤差,首先按照一定準側計算標準偏差,按照一定概率確定一定區間,認為不在這個區間的為異常值。

使用資料型別:資料呈正太分布或者近似正太分布。

2.舉例實驗

該實驗中使用正太分布函式確定區間,認為剩餘誤差超過3 σ

\sigmaσ為異常值。

python **實驗:

# encoding:utf-8

@author:noodles

2020-7-25 17:00:48

import math

import matplotlib.pyplot as plt

import numpy as np

plt.rcparams['font.sans-serif'] = ['simhei'] # 用來正常顯示中文標籤

plt.rcparams['axes.unicode_minus'] = false # 用來正常顯示負號

def pdf(x, mu, sigma):

y = (1.0 / math.sqrt(2 * math.pi * sigma)) * np.exp(-(x - mu) ** 2 / (2 * sigma ** 2))

return y

if __name__ == '__main__':

# generate random num tested

src_data = np.random.randn(100)

src_data[99] = 5 # add one outliers

x = np.sort(src_data)

# step1: get mean

mu = x.mean()

# step2: get standard deviation

sigma = x.std()

# plot histgram of its distribution

y = pdf(x, mu, sigma)

# step3: residual error

re = abs(x - mu)

# step4: remove outliers

good_x =

outliers =

for i, j in zip(re, x):

if i < 3 * sigma:

else:

good_x = np.array(good_x)

good_mu = good_x.mean()

good_sigma = good_x.std()

good_y = pdf(good_x, good_mu, good_sigma)

plt.plot(x, y, c='b', label=u'原始值')

plt.plot(good_x, good_y, c='r', label=u'去除異常值後資料')

plt.title('normalization distribution curve')

plt.legend()

plt.show()

print('the outliers removed:',outliers)

實驗結果:

使用pauta準側第一步你要能夠確定你的資料符合正太分布,或者能夠轉化為正太分布,其次根據自己的需要合理選擇不同的概率分布函式。

4.reference

拉依達準則去除異常資料

拉依達準側 pau ta criteron 是先假設一組資料中只含有隨機誤差,首先按照一定準側計算標準偏差,按照一定概率確定一定區間,認為不在這個區間的為異常值。使用資料型別 資料呈正太分布或者近似正太分布。該實驗中使用正太分布函式確定區間,認為剩餘誤差超過3 sigma 為異常值。python 實...

JSON檔案中非法字元的處理

json檔案中非法字元的處理 沙湖王 json是一種很好的資料格式,但是簡單之處也有麻煩的地方,比如如果json的字串裡面出現了雙引號的話,那真是搞死人了。之前我很傻,每次丟擲異常,我就根據異常顯示的位置,去慢慢乙個乙個找錯誤的地方,昨天才發現,網上有很多免費的json檢查的 這個就很不錯,把你的j...

VC 中非法探取密碼的原理及其防範

引言 在windows下輸入密碼時,為了安全起見通常都以星號來遮蔽使用者輸入的密碼。如果需要在自己編寫的應用程式中需要使用者輸入密碼,通常的選擇就是選用edit控制項並設定其password屬性。雖然edit控制項的password屬性在一定程度上可以保護使用者的密碼不被視覺 但在許多窺探密碼的黑客...