Com*_*low 7 python algorithm math normalization
我有一个没有等式的无休止的系列,并且是随机的,像这样,
   X = 1, 456, 555, 556, 557, 789 ... 
请注意,我将此列表作为流,我不知道未来的值,我不知道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
不知怎的,这并没有给出一个令人满意的结果,因为我的范围很大,而且200它本身给出了0我的范围将倾向于0.
好的,所以你基本上都在寻找一个连续的单调函数N:[0,∞)→(0,1)这样:
在这种情况下,"明显的"选择是N(x)= 1 /(x + 1),或者在Python中:
def invnorm (x):
    return 1.0 / (x + 1)
当然,也有满足这些标准,像无限多的其他功能Ñ(X)= 1 /(X + 1)一个用于任意正实数一个.
另一个"自然"选择是N(x)= e - x,或者在Python中:
def invnorm (x):
    return math.exp(-x)
对于任何实数b > 1,这也可以重新调整为N(x)= b - x,同时仍满足您的要求.
当然,如果我们放松单调性要求(我刚才假设,即使你没有明确说明),甚至像Abhishek Bansal的N(x)= sin(x)/ x这样的怪异函数也是合格的.
| 归档时间: | 
 | 
| 查看次数: | 132 次 | 
| 最近记录: |