规范化随机无休止的未知系列?

Com*_*low 7 python algorithm math normalization

我有一个没有等式的无休止的系列,并且是随机的,像这样,

   X = 1, 456, 555, 556, 557, 789 ... 
Run Code Online (Sandbox Code Playgroud)

请注意,我将此列表作为流,我不知道未来的值,我不知道min和max X.

我如何找出N(X)任何倒置法线x in X,这样,

N(x) --> 0 如果 x --> inf

N(x) --> 1 如果 x --> 0

读取它,x越接近它应该越接近0,x越接近它应该越接近1.

我怎样才能实现这样的转变?

我尝试了以下方法:

#python
def invnorm(x):
    denom = 1 + math.exp(-x)
    return 2 - (2/denom)

invnorm(200)
Out[8]: 0.0

invnorm(20)
Out[9]: 4.1223073843355e-09

invnorm(2)
Out[10]: 0.23840584404423537

invnorm(1)
Out[11]: 0.5378828427399902
Run Code Online (Sandbox Code Playgroud)

不知怎的,这并没有给出一个令人满意的结果,因为我的范围很大,而且200它本身给出了0我的范围将倾向于0.

Ilm*_*nen 8

好的,所以你基本上都在寻找一个连续的单调函数N:[0,∞)→(0,1)这样:

  • lim x →0 N(x)= 1,和
  • LIM X →∞ Ñ(X)= 0.

在这种情况下,"明显的"选择是N(x)= 1 /(x + 1),或者在Python中:

def invnorm (x):
    return 1.0 / (x + 1)
Run Code Online (Sandbox Code Playgroud)

当然,也有满足这些标准,像无限多的其他功能Ñ(X)= 1 /(X + 1)一个用于任意正实数一个.

另一个"自然"选择是N(x)= e - x,或者在Python中:

def invnorm (x):
    return math.exp(-x)
Run Code Online (Sandbox Code Playgroud)

对于任何实数b > 1,这也可以重新调整为N(x)= b - x,同时仍满足您的要求.

当然,如果我们放松单调性要求(我刚才假设,即使你没有明确说明),甚至像Abhishek Bansal的N(x)= sin(x)/ x这样的怪异函数也是合格的.