按大因子缩放大数和按小因子缩放小数的算法

标签 algorithm math transform scale venn-diagram

我正在寻找一种算法,该算法可以通过较大的系数缩放较大的离群值并仅缩放较小的数字(或者事件使它们与以前相同)。我们不必保持精确的比例,但只是一个想法,即大数仍然大于小数。

例如我有一组 10、15、200。 让我们分别将最小值和最大值定义为 0 和 100,并且缩放值应在该集合内(最小值和最大值未预定义,可以调整)。 使用该算法,我们可以将它们缩放到 5、6、20。

关于如何缩放这些数字的公式有什么想法吗?

我的用例是 3 个重叠集的维恩图数据。我想保留大集比小集大的事实,但大圆不应该比小圆大 20 倍。

最佳答案

您没有提供足够的细节来给出具体建议,但总的想法是您希望显着降低幅度。一般情况下,我们会通过以下方式处理此问题:

  • 平方根(或其他分数根)
  • log(基础并不重要;根据需要扩展)
  • arcTan(将结果限制在0-1的范围内)

玩一些你不寻常的案例,看看你喜欢哪个。您发布的示例最接近 sqrt 想法。

评论后更新

如果这用于选择维恩图中圆的半径,那么 sqrt 确实是保留对大小(来自面积)的认知解释的自然选择。这适用于任何 2D 缩放——尽管请注意,对带有阴影的图片(暗示 3D)执行此操作表明立方根将是合适的比例。 (引用:如何使用统计数据说谎)。

在输入量级非常不同的情况下,这有时是不可能的。例如给定 (1, 1000, 1000000),您可能想要使用更高的根,或更改为对数,只是为了使最小的形状易于处理。

关于按大因子缩放大数和按小因子缩放小数的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48431809/

相关文章:

algorithm - 我如何衡量某些词的趋势,比如 Twitter?

python - 洗牌随机整数,打印所有可能性

c# - 解释这段代码是如何工作的

c - 整数除法的行为是什么?

algorithm - 如何通过改变上限计算总和

python-3.x - 在 Python 中的置换树上实现深度优先搜索

c++ - 位置百分比度

css - 如何修复加载页面上的移动菜单?

javascript - 二维变换 - 如何保持位置?

html - Google map 和 CSS 变换使页面模糊