Python RuntimeWarning:在计算逻辑函数时exp中遇到溢出

Python RuntimeWarning:在计算逻辑函数时exp中遇到溢出,python,numpy,scipy,Python,Numpy,Scipy,当我试图为我正在实施的数据挖掘方法计算逻辑函数时,我遇到了这个错误: RuntimeWarning: overflow encountered in exp 我的代码: def logistic_function(x): # x = np.float64(x) return 1.0 / (1.0 + np.exp(-x)) 如果我从一些相关的问题中理解正确,那么问题在于np.exp()返回了一个巨大的值。我看到一些建议让numpy忽略警告,但问题是当我出现这个错误时,我的方法

当我试图为我正在实施的数据挖掘方法计算逻辑函数时,我遇到了这个错误:

RuntimeWarning: overflow encountered in exp
我的代码:

def logistic_function(x):
#     x = np.float64(x)
    return 1.0 / (1.0 + np.exp(-x))
如果我从一些相关的问题中理解正确,那么问题在于np.exp()返回了一个巨大的值。我看到一些建议让numpy忽略警告,但问题是当我出现这个错误时,我的方法的结果是可怕的。然而,当我没有得到它,那么他们是预期的。所以让numpy无视警告对我来说根本不是一个解决办法。我不知道怎么了,也不知道怎么处理


我甚至不知道这是否是一个错误的结果,因为有时我得到这个错误,有时不是!我检查了我的代码很多次,一切看起来都是正确的

您应该使用以下两种方法计算逻辑函数:一种是最近足够多的SciPy比您的解决方案更稳定(尽管早期版本弄错了),另一种是将其减少到
tanh

def logistic_function(x):
    return .5 * (1 + np.tanh(.5 * x))

此版本的函数稳定、快速且相当准确。

您只是试图计算太大而无法容纳8字节(浮点64)的数字。解决方案:筛选数据中足够小且有意义的值。
x
可能非常负面,请尝试此操作以重现警告:
np.exp(1e3)