我有一个数组如下:
var myArray = [3, 6, 8, 9, 16, 17, 19, 37]
我需要删除异常值以及将剩余数据分组到出现的任何特殊组中。在这种情况下,37
将作为异常值删除,[3, 6, 8, 9]
将作为第一个组返回,[16, 17, 19]
将作为第二个组返回。
这是第二个例子
var mySecondArray = [80, 90, 100, 200, 280, 281, 287, 500, 510, 520, 800]
200
和800
将作为异常值删除,[80, 90, 100]
将是第一组,[280, 281, 287]
将是第二组,[500, 510, 520]
作为第三组
我已经编写了代码,用于删除外部的异常值,使用第一个和第三个四分位数就足够了。换句话说,将800
作为异常值从mySecondArray
中删除是没有问题的。但它不会删除280
作为异常值。
我认为异常值可以定义为成员少于n
的组,因此真正的问题是将这些数据划分为适当数量的组的有效方法
非常感谢任何帮助!
答案 0 :(得分:1)
<强> here 强>
这只是一个简单的实现,它可能不是这组问题的完美解决方案,但它应该足以满足您的示例 - 它也可以超越它。
通过查看数字之间的平均距离,并将该距离与每个数字两侧的距离进行比较,应该可以删除异常值。因此,可以使用相同的度量标准进行分组。
{{1}}