【发布时间】:2013-01-08 14:08:16
【问题描述】:
假设我在 c++ 中有以下示例数字分布(向量):
vector 1 vector 2 vector 3
11 4 65
128 6 66
12 4 64
13 4 62
12 5 65
14 5 63
16 7 190
60 3 210
120 4 220
126 5 242
77 6 231
14 4 210
12 7 222
13 6 260
11 8 300
14 6 233
99 80
15 66
13
我需要为每个向量找到一个阈值。如果它们高于该向量的阈值,我将消除每个中较大的(“坏”)数字。我想在将来重新使用这种方法来找到其他类似向量的阈值。这些数字不一定是较小的“好”数字。
理想情况下,阈值只是比大多数较小的“好”数字大一点。例如,第一个 vetor 的理想阈值在 17 或 18 左右,第二个在 8 左右,第三个在 68-70 左右。
我意识到这可能是简单的数学,但由于我的数学一般很糟糕,我真的很感激一个关于如何找到这个神奇阈值的代码示例,特别是在 C++ 或 Objective-C 中,这就是为什么我'我在 SO 中而不是在 Math 网站上发布此内容。
我尝试过的一些事情
float threshold = mean_of_vector;
float threshold = mean_of_vector / 1.5f;
float threshold = ((max_of_vector - min_of_vector) / 2.0f) + mean_of_vector;
这些似乎都有自己的问题,例如:有些包含太多的“好”平均数(因此阈值太低),有些没有足够的好数(阈值太高),或者不够“坏”的数字。有时他们会使用特定的数字向量,例如,如果标准差较高,但在标准差较低的情况下则不然。
我认为该方法将涉及标准偏差和/或某种高斯分布,但我不知道如何将它们拼凑在一起以获得所需的结果。
编辑:我可以重新排序向量。
【问题讨论】:
标签: math numbers gaussian threshold standard-deviation