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

时间:2014-10-06 14:37:33

标签: 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忽略警告的建议,但问题是当我得到这个错误时,我的方法的结果是可怕的。但是当我没有得到它时,它们就像预期的那样。所以让numpy忽略警告根本不是我的解决方案。我不知道有什么问题或者如何处理。

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

1 个答案:

答案 0 :(得分:9)

您应该使用scipy.special.expit来计算逻辑函数,其中在最近的SciPy 比您的解决方案更稳定(尽管早期版本错误),或者将其缩减为{ {1}}:

tanh

此版本的功能稳定,快速且相当准确。