假设我在 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
我需要为每个向量找到一个阈值。如果它们高于该向量的阈值,我将消除每个中较大的(“坏”)数字。我想在将来重新使用这种方法来找到其他类似向量的阈值。这些数字不一定是较小的“好”数字。
理想情况下,阈值只是比大多数较小的“好”数字大一点。例如,第一个投票者的理想阈值将在 17 或 18 左右,第二个将在 8 左右,第三个将在 68-70 左右。
我意识到这可能是简单的数学,但由于我一般数学很糟糕,我真的很感激一个关于如何找到这个神奇阈值的代码示例,特别是在 C++ 或 Objective-C 中,这就是我发布这个的原因在 SO 而不是在数学网站上。
我尝试过的一些事情
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;
这些似乎都有自己的问题,例如:有些包含太多的“好”平均数字(因此阈值太低),有些没有足够的好数字(阈值太高),或者没有足够的“坏” “数字。有时他们会使用特定的数字向量,例如,如果标准偏差很高,但在标准偏差较低的情况下则不然。
我认为该方法将涉及标准偏差和/或某种高斯分布,但我不知道如何将它们拼凑在一起以获得所需的结果。
编辑:我能够重新排序向量。