【发布时间】:2018-10-14 00:01:48
【问题描述】:
假设我有
values = [0.1, 0.2, 0.5, 1, 2, 5, 10, 20, 50]
我想按 权重 缩放每个元素,因此值越远离均值越快(或越大)。也就是说,要让“小数”(低于平均值的数字)更大,而让“大数字”(高于平均值的数字)更小。
假设平均值为 1,那么:
scale(values) -> [0.6, 0.7, 0.8, 1, 1.5, 4, 8, 12, 20]
高于平均值的值会下降越快(2 到 1.5,但 50 到 20),而低于平均值的值会增加越快是(0.5 到 0.8,但 0.1 到 0.6)。
我尝试搜索«如何规范化数据»,但这样的答案平等地缩放所有值。例如
scaled = [(i - min(values))/max(values) for i in values]
另外,我需要控制值的缩放权重。
【问题讨论】:
-
您能否提供您自己进行的任何尝试以及上述所需的输出?
-
@Ian:一种方法是对所有值求平方:小于 1 的值会变小,大于 1 的值会变大,变化率取决于距离。
-
使用对数值?
-
请提供一个示例,说明您最终希望达到/获得什么。也许您可以使用消耗权重来应用“标准化”。也许:ln = 6, coeff = [1/(1 + abs(l/2 -i)) for i in range(6)] 也看看 numpy 的数组,它可能对你有帮助。
-
添加了一些示例。另外,我在使用平方方法时遇到了问题,因为数量越来越少。我打算让“小数字”(低于平均水平)更大,而“大数字”(高于平均水平)更小。
标签: python statistics