1
resposta

ConvergenceWarning

No momento de instanciar e treinar o LinearSVC() recebi um warning de :

/usr/local/lib/python3.7/site-packages/sklearn/svm/_base.py:947: ConvergenceWarning: Liblinear failed to converge, increase the number of iterations.
  "the number of iterations.", ConvergenceWarning)

Além do Warning, meu modelo teve acurácia diferente nas diversas vezes q executei, mesmo estratificando e tendo um SEED para o random_state e uma estratificação.

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

SEED = 20

train_x, test_x, train_y, test_y = train_test_split(x, y, test_size = 0.25, random_state = SEED, stratify = y)

print('Treinaremos com %d e testaremos com %d elementos' % (len(train_x), len(test_x)))

model = LinearSVC()
model.fit(train_x, train_y)
predictions = model.predict(test_x)

accuracy = accuracy_score(test_y, predictions) * 100
print('Tivemos uma precisão de %.2f%%' % (accuracy))

Tentei aumentar o número de iterações com

model = LinearSVC(max_iter = 10000)

mas não tive resultados por maior q fossem os números de iterações que tentei.

1 resposta

Oi Felipe,

LinearSVC tem o seu próprio random_state. Mesmo dividindo a base de dados com uma SEED pré definida você vai ter que definir uma SEED para o LinearSVC. Do contrário a resposta vai ser diferente toda vez que rodar mesmo.

Quanto ao número de iterações não importa muito o quanto você vai aumentar. O LinearSVC só consegue resolver problemas lineares e este problema é não-linear.