Scipy expit:意外行为。南斯

2024-04-20 12:39:08 发布

您现在位置:Python中文网/ 问答频道 /正文

注意到一些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


Tags: 数据fromimportnumpy示例heredocumentationscipy
1条回答
网友
1楼 · 发布于 2024-04-20 12:39:08

What is going on?

显然,函数没有被编码来处理如此大的输入,并且在内部计算期间遇到溢出。在

数字710的意义在于math.exp(709)可以表示为float,而{}不能:

In [27]: import math

In [28]: math.exp(709)
Out[28]: 8.218407461554972e+307

In [29]: math.exp(710)
                                     -
OverflowError                             Traceback (most recent call last)
  > 1 math.exp(710)

OverflowError: math range error

可能值filing a bug against SciPy。在

相关问题 更多 >