1
resposta

Porque esta aparecendo isso? ConvergenceWarning

in:

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

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

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("Treinaremos com %d elementos e testaremos com %d elementos" % (len(treino_x), len(teste_x)))

modelo = LinearSVC()
modelo.fit(treino_x, treino_y)
previsoes = modelo.predict(teste_x)

acuracia = accuracy_score(teste_y, previsoes) * 100
print("A acurácia foi %.2f%%" % acuracia)

out:

Treinaremos com 1617 elementos e testaremos com 540 elementos
A acurácia foi 47.41%
/usr/local/lib/python3.6/dist-packages/sklearn/svm/_base.py:947: ConvergenceWarning: Liblinear failed to converge, increase the number of iterations.
  "the number of iterations.", ConvergenceWarning)
1 resposta

Oii Rogério, tudo certinho por ai?

O ConvergenceWarning aparece apenas como um aviso, e nesse caso ele está avisando que o modelo não convergiu, 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, 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.

Para aumentar o número de iterações é só fazer dessa forma:

modelo = LinearSVC(max_iter=1000)

O número de 1000 iterações é padrão do LinearSVC, então você pode aumentar esse valor e ver quais os resultados.

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

Bons estudos ^^