当我尝试为我正在实现的数据挖掘方法计算逻辑函数时出现此错误:

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.special.expit 计算逻辑函数,其中 在最近足够的 SciPy 比您的解决方案更稳定(尽管早期版本出错了),或者将其简化为 tanh :

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

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

关于python - 运行时警告 : overflow encountered in exp in computing the logistic function,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26218617/

10-13 07:31