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屬性在一定程度上可以保護使用者的密碼不被視覺 但在許多窺探密碼的黑客...