1
resposta

ConvergenceWarning

C:\Users\muniz\AppData\Local\Programs\Python\Python37-32\lib\site-packages\sklearn\svm\base.py:922: ConvergenceWarning: Liblinear failed to converge, increase the number of iterations.
  "the number of iterations.", ConvergenceWarning)
C:\Users\muniz\AppData\Local\Programs\Python\Python37-32\lib\site-packages\sklearn\svm\base.py:922: ConvergenceWarning: Liblinear failed to converge, increase the number of iterations.
  "the number of iterations.", ConvergenceWarning)
Taxa de acerto do algoritmo OneVsRest: 90.9090909090909
Taxa de acerto do algoritmo MultinomialNB: 72.72727272727273
Taxa de acerto do algoritmo AdaBoostClassifier: 68.18181818181819
Taxa de acerto do vencedor entre os dois algoritmos no mundo real: 82.6086956521739
Taxa de acerto base: 82.608696
Total de teste: 23

Porque esta aparecendo isso? ConvergenceWarning

1 resposta

Oi Emillyn,

repare que na descrição do aviso está dizendo que é preciso aumentar o número de iterações, certo?

As iterações são quantas vezes o nosso algoritmo vai rodar, então ele está meio perdido nisso, o que faz com que gere o warning.

Quando os dados e nosso modelo se encontram de um modo feliz e temos uma ótima taxa de acerto, esse encontro é chamado de convergência. Geralmente dizemos que o modelo convergiu. Isso é o convergence que está identificando o warning.

E o que isso tem a ver com as iterações? É com elas que propriciamos que isso aconteça e é ai que ele está se perdendo.

Para dar um norte, você pode definir essas iterações, então adicione o parâmetro do número máximo de iterações max_iter=1000 ao classificador LinearSVC, como abaixo:

modelo = OneVsRestClassifier(LinearSVC(random_state = 0, max_iter=1000))

Essa pode ser uma solução, há outras.

Teste e veja se assim o aviso desaparece.

Eu espero ter esclarecido e aguardo a sua resposta. :)