繁体   English   中英

用小因子按大因子和小数量表示大数的算法

[英]Algorithm to scale large numbers by large factor and small numbers by small factor

我正在寻找一种算法,它可以通过一个很大的因子来扩展一个大的异常值,并且只对一些小的数字进行缩放(或者事件保持它们与以前相同)。 我们不必保持准确的比例,但只是一个想法,大数仍然大于小数。

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

关于如何扩展这些数字的公式的任何想法?

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

你没有提供足够的细节来给出具体的建议,但总的想法是你想要一些显着的减少。 通常,我们使用以下内容处理此问题:

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

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

评论后更新

如果这用于选择维恩图中的圆的半径,那么sqrt确实是保持大小(来自区域)的认知解释的自然选择。 这适用于任何2D缩放 - 尽管注意到对具有着色( 隐含 3D)的图片执行此操作表明立方根将是适当的比例。 (参考:如何欺骗统计数据)。

在输入具有非常不同的幅度的情况下,这有时是不可能的。 例如,给定(1,1000,1000000),您可能希望使用更高的根,或更改为日志,只是为了使最小的形状易于处理。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM