Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] ConvergenceWarning: Liblinear failed to converge

Para o seguinte código:

x = dados[['preco', 'km_por_ano']]
y = dados['vendido']

from sklearn.model_selection import train_test_split
from sklearn.svm import LinearSVC
from sklearn.metrics import accuracy_score 

SEED = 23
  
x_treino, x_teste, y_treino, y_teste = train_test_split(x, y, random_state = SEED,  test_size=0.25, stratify = y)

print("Treinando com %d elementos e testando com %d" % ((len(x_treino)), len(x_teste)))  

model = LinearSVC(random_state = SEED) # random_state é um parametro que permite replicabilidade
model.fit(x_treino, y_treino)
previsoes = model.predict (x_teste)

acuracia = accuracy_score(y_teste, previsoes) * 100

print ("A acuracia foi de %.2f%%" % acuracia)

Temos o seguinte Output:

Treinando com 7500 elementos e testando com 2500
A acuracia foi de 61.20%
/usr/local/lib/python3.10/dist-packages/sklearn/svm/_base.py:1244: ConvergenceWarning: Liblinear failed to converge, increase the number of iterations.
  warnings.warn(

Meu código está correto, mas gostaria de confirmar se este erro é esperado. Ocorre devido à incapacidade do LinearSVC de se ajustar aos meus dados? Em outras palavras, o modelo de previsão não está convergindo para um resultado? É isso que está acontecendo? Pergunto pois não vi o aviso no vídeo do instrutor.

1 resposta
solução!

Olá Fernanda, tudo bem?

O aviso de Convergence Warning, esclareço que é apenas um alerta e não afeta o desempenho do seu código. Ele indica que o modelo não está convergindo. Uma solução é aumentar o número de iterações usando o parâmetro max_iter, por exemplo, max_iter = 1500 dentro da função LinearSVC(). No entanto, mesmo fazendo isso, o aviso pode persistir, especialmente porque o LinearSVC é mais adequado para problemas lineares, enquanto no caso do curso estamos lidando com um problema não linear.

Para ignorar esses avisos sobre a não convergência do modelo, você pode incluir o seguinte código no início do seu notebook:

import warnings
warnings.filterwarnings('ignore')

Para saber um pouco mais sobre esse warning deixo como sugestão a leitura deste tópico.

Espero ter ajudado.

Qualquer dúvida, compartilhe no fórum.

Abraços e bons estudos!

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