在数组中寻找异常值,lis

2024-03-28 11:05:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数组形式的销售统计数据来计算这个数据的标准偏差或平均值。在

stats = [100, 98, 102, 100, 108, 23, 120] 

让我们说+-20%的微分是正常情况,23显然是一个特例。在

找到这个异常值的最佳算法是什么(在任何语言中,伪算法还是任何原理)?在


Tags: 数据算法语言stats情况数组形式统计数据
3条回答

您可以将它们转换为Z-scores并查找异常值。在

>>> import numpy as np
>>> stats = [100, 98, 102, 100, 108, 23, 120]
>>> mean = np.mean(stats)
>>> std = np.std(stats)
>>> stats_z = [(s - mean)/std for s in stats]
>>> np.abs(stats_z) > 2
array([False, False, False, False, False,  True, False], dtype=bool)

找到standard deviation,3西格玛或+-3西格玛之外的值是一个离谱的值。。。在

理论上,+-3西格玛给出的confidence value大于99%。在

计算平均值和标准差。将任何超过平均值X标准差的值视为“异常”(其中X可能在2.5到3.0左右)。在

这个主题有很多变体。如果你需要一些在统计学上可靠的东西,你可能会想看看其中的一些,他们可以消除一些东西,比如说,捍卫任意选择(比如)2.7标准差作为分界线。在

相关问题 更多 >