注意到一些nan在我的数据中意外出现。 (把触碰到的一切都扩展开来) 做了一些仔细的调查,并给出了一个最小的工作示例:
>>> import numpy
>>> from scipy.special import expit
>>> expit(709)
1.0
>>> expit(710)
nan
Expit是逆逻辑。Scipy documentation here。
它告诉我们:
expit(x) = 1/(1+exp(-x))
所以1+exp(-709)==1.0
所以{exp(-709)==0
。
但是,expit(710)
是怎么回事?expit(710)==nan
意味着1+exp(-710)==0
,这意味着:exp(-710)=-1
这一点都不对。在
怎么回事?
我用的是:
^{pr2}$但是这会慢一点,因为额外的操作和python开销。在
我使用的是Numpy1.8.-0和Scipy0.13.2
显然,函数没有被编码来处理如此大的输入,并且在内部计算期间遇到溢出。在
数字710的意义在于}不能:
math.exp(709)
可以表示为float
,而{可能值filing a bug against SciPy。在
相关问题 更多 >
编程相关推荐