当我尝试为我正在实施的数据挖掘方法计算逻辑函数时,我收到此错误:
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忽略警告根本不是我的解决方案。我不知道有什么问题或者如何处理。
我甚至不知道这是否是一个错误的结果,因为有时我得到这个错误,有时不会!我多次查看我的代码,一切看起来都正确!
答案 0 :(得分:9)
您应该使用scipy.special.expit
来计算逻辑函数,其中在最近的SciPy 比您的解决方案更稳定(尽管早期版本错误),或者将其缩减为{ {1}}:
tanh
此版本的功能稳定,快速且相当准确。