Como corrigir: runtimewarning: overflow encontrado em exp
Um aviso que você pode encontrar em Python é:
RuntimeWarning: overflow encountered in exp
Este aviso ocorre quando você usa a função exp NumPy, mas usa um valor que é muito grande para ser manipulado.
É importante observar que isso é apenas um aviso e o NumPy ainda realizará o cálculo solicitado, mas fornece o aviso por padrão.
Ao encontrar esse aviso, você tem duas opções:
1. Ignore isso.
2. Remova completamente o aviso.
O exemplo a seguir mostra como responder a esse aviso na prática.
Como reproduzir o aviso
Suponha que realizemos o seguinte cálculo em Python:
import numpy as np #perform some calculation print (1/(1+np. exp (1140))) 0.0 /srv/conda/envs/notebook/lib/python3.7/site-packages/ipykernel_launcher.py:3: RuntimeWarning: overflow encountered in exp
Observe que NumPy faz o cálculo (o resultado é 0,0), mas ainda imprime RuntimeWarning .
Este aviso é impresso porque o valor np.exp(1140) representa e 1140 , que é um número enorme .
Basicamente pedimos ao NumPy para realizar o seguinte cálculo:
- 1 / (1 + número massivo)
Isso pode ser reduzido para:
- 1 / número enorme
Na verdade, é 0, e é por isso que o NumPy calculou o resultado como 0.0 .
Como remover o aviso
Se quisermos, podemos usar o pacote warnings para suprimir os avisos da seguinte forma:
import numpy as np import warnings #remove warnings warnings. filterwarnings (' ignore ') #perform some calculation print (1/(1+np. exp (1140))) 0.0
Observe que NumPy realiza o cálculo e não exibe RuntimeWarning.
Nota : Em geral, os avisos podem ser úteis na identificação de trechos de código que demoram muito para serem executados. Portanto, seja muito seletivo ao decidir remover os avisos.
Recursos adicionais
Os tutoriais a seguir explicam como corrigir outros erros comuns em Python:
Como corrigir KeyError em Pandas
Como corrigir: ValueError: não é possível converter float NaN em int
Como corrigir: ValueError: os operandos não puderam ser transmitidos com formas