【发布时间】:2014-02-12 03:15:45
【问题描述】:
我有一个没有方程式的无休止序列,并且是随机的,像这样,
X = 1, 456, 555, 556, 557, 789 ...
请注意,我将此列表作为流获取,我不知道未来的值,也不知道 X 的最小值和最大值。
如何找出任何x in X 的倒置法线N(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 倾斜。
【问题讨论】:
-
输入是否保证为正整数?
-
一个非常有趣的问题,我很遗憾我现在没有时间思考它。如果你在这里没有得到满意的答案,也许可以试试math.stackexchange.com,因为这是一个数学问题,可能比计算恕我直言。祝你好运。
-
您的问题未充分说明。
N(x)=(x>0)?1:0满足您的要求,据我所知。 -
原始函数的问题是
e^{-x}下降得非常快,所以当你到达x=200时,它基本上为零。公认的解决方案是通过找到减少更慢的东西来解决这个问题。
标签: python algorithm math normalization