我需要计算exp(x**2)
where x = numpy.arange(30,90)
。这引发了警告:
RuntimeWarning: overflow encountered in exp
inf
我不能安全地忽略这个警告,但 SymPy 和 mpmath 都不是解决方案,我需要执行数组操作,所以 Numpy 解决方案将是我的梦想。
有谁知道如何处理这个问题?
您可以使用具有必要范围的数据类型,例如decimal.Decimal
:
>>> import numpy as np
>>> from decimal import Decimal
>>> x = np.arange(Decimal(30), Decimal(90))
>>> y = np.exp(x ** 2)
>>> y[-1]
Decimal('1.113246031563799750400684712E+3440')
但是你用这些数字做什么?你能避免取幂并使用对数吗?有关您的问题的更多详细信息会有所帮助。
我认为您可以使用此方法来解决此问题:
归一化
我克服了这种方法的问题。在使用这种方法之前,我的分类准确率为:86%。使用此方法后,我的分类准确率为:96%!!!这很棒!
第一个:
Min-Max 缩放
第二个:
Z-score 标准化
这些是实现的常用方法normalization
。
我使用第一种方法。我改变它。最大数除以 10。所以结果的最大数是 10。那么 exp(-10) 将不是overflow
!
希望我的回答对你有帮助!(^_^)