現在有這樣一組數據,希望去除掉里面的異常數據。其中,異常數據可能比正常數據大也可能比正常數據小,可能是正的也可能是負的。
數據為deg=[]
import numpy as np
if(True):
#new_nums = list(set(deg)) #剔除重復元素
mean = np.mean(deg)
var = np.var(deg)
print("原始數據共",len(deg),"個\n",deg)
'''
for i in range(len(deg)):
print(deg[i],'→',(deg[i] - mean)/var)
#另一個思路,先歸一化,即標準正態化,再利用3σ原則剔除異常數據,反歸一化即可還原數據
'''
#print("中位數:",np.median(deg))
percentile = np.percentile(deg, (25, 50, 75), interpolation='midpoint')
print("分位數:",percentile)
#以下為箱線圖的五個特征值
Q1 = percentile[0]#上四分位數
Q3 = percentile[2]#下四分位數
IQR = Q3 - Q1#四分位距
ulim = Q3 + 1.5*IQR#上限 非異常范圍內的最大值
llim = Q1 - 1.5*IQR#下限 非異常范圍內的最小值
new_deg = []
for i in range(len(deg)):
if(llim
運行效果如下,由于數據是從攝像頭采集的,每次會有點不一樣
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
