如何“调整”数据集,使总和等于1.(我以为我知道正确的术语)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何“调整”数据集,使总和等于1.(我以为我知道正确的术语)相关的知识,希望对你有一定的参考价值。

我提前道歉这个问题措辞粗糙的方式。我最长时间的印象是我正在尝试做的事情被称为“规范化数据”,但谷歌搜索后试图找到这样做的方法,我似乎错了所以我不确定它到底是什么我打算这样做(请跟我说)。

我有一组这样的数据:

0.17407
0.05013
0.08520
0.02892
0.02986
0.06286
0.04453
0.00425
0.20470
0.02267
0.01470
0.02460
0.01735
0.01069
0.02168
0.13912
0.02004
0.02018
0.07837

当你添加它们时,你得到1.05392

我想“调整”数据集,以便相对值保持不变但总和等于1.当我用Google搜索规范化数据集时,我找到了这样的公式:

(x-min(x))/(max(x)-min(x))

但是,这只是将每个数据点“排名”为最大值的某个百分比,这样您的数据集中的最大值等于1,最小值为0。

额外:如果没有规范化数据,有人可以告诉我这是什么。很明显,我一直在徘徊这种无知的信念。

答案

如果您希望数据总和为1,则可以规范化数据。您可以通过除以系列的总和(sum_i x_i,其中x_i是数据系列的元素)进行标准化。

你提到的公式是另一种可能的重新缩放,但正如你所观察到的那样,它具有不同的效果。请注意,在第一种情况下,您映射x -> c*x(在您的情况下:x -> 1/1.05392*x),而第二种情况用x -> c*x + offset重新缩放。还要注意,后者不是线性的(除非是min(x) = 0),即f(x+y) != f(x) + f(y)

如果你的整个混乱是关于事物的命名,那么我不会太担心。毕竟只有惯例和共同协议,但没有绝对的真理/权威。这些术语在不同领域重复使用,参见Normalization on Wikipedia

规范化或规范化是指使某些事物更正常或更规则的过程

以上是关于如何“调整”数据集,使总和等于1.(我以为我知道正确的术语)的主要内容,如果未能解决你的问题,请参考以下文章

归一化向量,使总和等于 1,同时满足下限

如何计算 LINQ 中 DataTable 的列的总和(到数据集)?

如何产生随机数,使它们的总和等于给定的数字?

火花数据集分组和总和

获取加起来等于给定数字的所有可能总和

是否可以对数组中的每 3 个相邻元素求和,并使用向量指令使它们中的每一个都等于总和?