1
resposta

ConvergenceWarning e max_int para convergência

Olá a todos.

Estou tendo um problema de convergência muito semelhantes a outros casos já relatados aqui no fórum. Porém, neste caso o aviso de warning ainda continua aparecendo mesmo depois do resultado convergir. Alguem saberia explicar o que isto significa?

Outra dúvida que ocorreu foi se existe algum modo de definirmos o número de iterações para a convergencia do modelo utilizando algum método ou técnica, ou se este valor ideal deve ser definido apenas de forma empírica ( no meu caso, os resultados convergiram a partir de 2499 iterações)?

Treinamento do 1617 elementos e testamos com 540 elementos. A acurácia do modelo de treinamento é de 47.41% /usr/local/lib/python3.7/dist-packages/sklearn/svm/_base.py:947: ConvergenceWarning: Liblinear failed to converge, increase the number of iterations. "the number of iterations.", ConvergenceWarning)

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

x = dados[['horas_esperadas','preco']]
y = dados['finalizado']

seed = 20
treino_x, teste_x, treino_y, teste_y = train_test_split(x, y,random_state = seed, test_size = 0.25, stratify = y)
print('Treinamento do %d elementos e testamos com %d elementos.' %(len(treino_x),len(teste_x)))

modelo = LinearSVC(random_state=0,max_iter=2499)
modelo.fit(treino_x,treino_y)
previsoes = modelo.predict(teste_x)

acuracia = accuracy_score(teste_y, previsoes)*100
print('A acurácia do modelo de treinamento é de %.2f%%'%acuracia)
1 resposta

Oii Leonardo, tudo certinho por ai?

O ConvergenceWarning aparece apenas como um aviso, e nesse caso ele está avisando que o modelo não convergiu, mesmo você aumentando o número de max_iter, mas não afeta em nada seu resultado final. Uma forma de fazer com que esse warning desapareça é aumentando o número de iterações ainda mais, que talvez faça o modelo convergir, mas o LinearSVC só consegue resolver problemas lineares e esse problema da aula é não-linear, pode ser que não altere esse aviso.

O número de 1000 iterações é padrão do LinearSVC, mas como vi que usou o 2499, acredito que precisa aumentar um pouco mais ainda, você pode tentar com 10000 iterações e ver o resultado, mas vale lembrar novamente que esse aviso não afeta seu resultado!

Espero ter ajudado e qualquer outra dúvida é só me chamar!

Bons estudos ^^

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software