Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

ConvergenceWarning: Liblinear failed to converge, increase the number of iterations.

Ao utilizar o modelo LinearSVC(), o Random State não está funcionando... Ao rodar o modelo várias vezes, ele fornece um resultado diferente.

O código que eu utilizei foi esse:

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('Treino: %d elementos' % treino_x.shape[0])
print('Teste: %d elementos' % teste_x.shape[0])

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

acuracia = accuracy_score(teste_y, previsoes)*100
print('Acurária: %.2f%%' % acuracia)

E o resultado foi:

Treino: 1617 elementos Teste: 540 elementos Acurária: 47.41% <diretório>site-packages/sklearn/svm/_base.py:1244: ConvergenceWarning: Liblinear failed to converge, increase the number of iterations. warnings.warn(

2 respostas
solução!

Aparentemente no fórum tem várias explicações sobre isso, algumas são diferentes, no meu caso o que resolveu tanto o warning quanto a acurácia mudando é colocar:

modelo = LinearSVC(dual = False)

como é explicado no final dessa pergunta aqui

também há outro jeito de resolver o problema de acurácia diferente, porém não irá sumir com o warning, que seria colocar

model = LinearSVC(random_state=SEED)

como explicado aqui

Obrigada, João!