1
resposta

Erro na hora de fazer a regressão

Estou tomando o seguinte erro ao fazer executar o teste de acurácia da regressão:

ValueError: Input contains NaN, infinity or a value too large for dtype('float64').

meu código:

from sklearn.linear_model import LogisticRegression

treino, teste, classe_treino, classe_teste = train_test_split(bag_of_words, dados.classificacao, test_size = 0.33, random_state = 42)

regressao_logistica = LogisticRegression()
regressao_logistica.fit(treino, classe_treino)
acuracia = regressao_logistica.score(teste, classe_teste)
print(acuracia)

alguém sabe como solucionar?

1 resposta

Olá, Samuel! Tudo bem com você?

Esse erro está sendo causado porque você tem dados nulos em seu dataset e está tentando treinar o modelo com esses dados nulos, como isso não é possível nos é retornado esse erro.

Podemos simular dessa maneira:

from sklearn.datasets import load_iris
from sklearn.linear_model import LogisticRegression
import numpy as np

X, y = load_iris(return_X_y=True)
X[0][0] = np.nan  # Adicionando dado nulo

clf = LogisticRegression(random_state=0).fit(X, y)
clf.predict(X[:2, :])

clf.predict_proba(X[:2, :])
clf.score(X, y)

Saída:

ValueError: Input contains NaN, infinity or a value too large for dtype('float64').

Isso aconteceu porque eu propositalmente adicionei um dado nulo e tentei executar o método .fit() com esse dado nulo presente no dataset.

Você pode verificar os dados nulos com os métodos .isna() ou .isnull().

Para solucionar o erro encontrado por você basta remover os dados nulos com o .dropna().

Espero ter ajudado, mas se ainda persistir alguma dúvida estou sempre à disposição.

:)

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.Bons Estudos!