0

给定下限 0.025,我想要一个由总和为 1 并满足该下限的权重组成的向量。从具有任意长度的向量开始,值范围从 0.025(下限)到 1。

例如,

[0.025, 0.8, 0.7]

然后,除以数字总和的归一化大致为您提供以下结果:

[0.016, 0.524, 0.459]

现在这不满足下限,关于如何让它工作的任何想法?

4

2 回答 2

1

如果您希望权重(数组中的值)总和为 1,您可以将每个值除以所有值的总和(即通过总和归一化)。这个过程保持每对值的相对大小,我的意思是:在步骤之前和之后,第二项将是第四项的 5 倍。

另一方面,您希望所有值都大于 0.025。想象一下,如果一个项目在标准化之前是另一个项目的 50 倍,并且最小值必须是 0.025,那么另一个项目需要是 1.25,这已经大于总和。

您可以发现您不能(给定任何数组)只是平等地缩放所有值,以便它们总和为 1 并且 最小值为 0.025

那么问题是您希望在过程中保持值之间的什么关系?

另一方面,你不能有超过 40 个项目,都大于 0.025,总和为 1。所以“任意长度”也行不通。

于 2021-10-02T17:37:16.833 回答
0

将下限添加到被除数和除数:

我用于numpy可读性:

import numpy as np

v = np.array([0.025, 0.8, 0.7])

v2 = (v + min(v)) / sum(v + min(v))

输出:

>>> v2
array([0.03125 , 0.515625, 0.453125])

>>> sum(v2)
1.0
于 2021-09-30T20:19:26.983 回答