【发布时间】:2019-08-09 21:05:41
【问题描述】:
我想从列表中检测和存储异常值,这就是我正在做的事情
代码:
def outliers(y,thresh=3.5):
m = np.median(y)
abs_dev = np.abs(y - m)
left_mad = np.median(abs_dev[y <= m])
right_mad = np.median(abs_dev[y >= m])
y_mad = left_mad * np.ones(len(y))
y_mad[y > m] = right_mad
modified_z_score = 0.6745 * abs_dev / y_mad
modified_z_score[y == m] = 0
return modified_z_score > thresh
bids = [5000,5500,4500,1000,15000,5200,4900]
z = outliers(bids)
bidd = np.array(bids)
out_liers = bidd[z]
结果如下:
out_liers = array([ 1000, 15000])
有没有更好的方法来做到这一点,我不是在数组中而是在列表中得到结果? 另外请有人解释一下我们为什么使用
thresh=3.5
modified_z_score = 0.6745 * abs_dev / y_mad
【问题讨论】:
-
如果你需要一个列表而不是 numpy 数组,numpy 数组很方便地提供了一个
tolist函数:out_liers.tolist()。您的其他疑问最好由代码的原作者回答。
标签: python arrays python-3.x list outliers