3
respostas

Erro no LinearSVC.fit e LinearSVC.predict

Utilizando este código sempre ocorre o erro

x = dados[['horas_esperada','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 = 20, test_size = 0.25, stratify = y)

modelo = LinearSVC()
modelo.fit(treino_x,treino_y)

/usr/local/lib/python3.6/dist-packages/sklearn/svm/base.py:929: ConvergenceWarning: Liblinear failed to converge, increase the number of iterations.
  "the number of iterations.", ConvergenceWarning)

há como solucionar? E também não consigo obter os resultados igual ao que ocorre na aula. Pode ser esse o problema?

O resultado do meu Z está ficando:

array([[0, 0, 0, ..., 0, 0, 0],
       [0, 0, 0, ..., 0, 0, 0],
       [0, 0, 0, ..., 0, 0, 0],
       ...,
       [0, 0, 0, ..., 0, 0, 0],
       [0, 0, 0, ..., 0, 0, 0],
       [0, 0, 0, ..., 0, 0, 0]])
3 respostas

Estou com o mesmo problema na questão do "ConvergenceWarning". É algo relativo ao treino (fit). Tentei aumentar o "max_iter": modelo = LinearSVC(max_iter=5000) ou modelo.max_iter=6000, ou qualquer outro valor, mas sem êxito.

No arquivo anterior, acredito que por possuir menos itens, não ocorre o Warning

Por se tratar de um Warning, se não apresentar nenhum problema, uma opção são os imports abaixo, relacionado às "exceptions", no início do arquivo ou antes do treino.


import warnings
from sklearn.exceptions import ConvergenceWarning
warnings.filterwarnings("ignore", category=ConvergenceWarning,module="sklearn")

modelo.fit(treino_x, treino_y)

O que acontece não é exatamente um erro, é apenas um Warning (aviso) como o Willian falou. O aviso está indicando que seus dados de treino não estão normalizados ou otimizados para criar um modelo, imagino que seja por isso que a acurácia fique tão baixa.

Imagino que isso seja algo relacionado a versão, já que na aula o professor também fica com uma acurácia baixa, mas sem Warning. O aviso deve aparecer apenas em versões mais recentes do sklearn, mas não tenho certeza.

Como é apenas um aviso, você pode fazer como o Willian e desativar esse tipo de aviso ou apenas ignorar mesmo. Mais a frente o professor vai mostrar como "ajustar/normalizar" os dados para obter um modelo mais preciso e com uma acurácia maior.

O meu Z está ficando com o valor igual ao seu. Conseguiu resolver?