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

Mensagem sobre o numero de iteração

Olá, ao rodar o código, ele funcionou mas mostrou uma mensagem de '/usr/local/lib/python3.6/dist-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel(). y = column_or_1d(y, warn=True) /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)', mas não entendi o que significa. Podem, por favor, me ajudar a resolver esse problema?

#definindo o x e y
x = dados[['horas_esperadas', 'preco']]
y = dados[['finalizado']]

#separando de forma proporcional usando o stratify
#medindo a acuracia pelo modulo
from sklearn.model_selection import train_test_split
#preparando para treinar os modelos
from sklearn.svm import LinearSVC
#importando modulo para metricas
from sklearn.metrics import accuracy_score

#definindo numeros para resolver o problema de numeros aleatórios
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)))

#criando o modelo
modelo = LinearSVC()
#passando os parametros
modelo.fit(treino_x, treino_y)
#atribuindo a predição ao modelo
previsoes = modelo.predict(teste_x)

taxa_de_acerto = accuracy_score(teste_y, previsoes)
print("A taxa de acerto do modelo é: %.2f" %(taxa_de_acerto * 100), end='%.\n')
2 respostas
solução!

Olá Leonardo.

São dois Warning, o primeiro:

C:\Users\igor_\anaconda3\lib\site-packages\sklearn\utils\validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().
  y = column_or_1d(y, warn=True)

Esse diz a respeito do formato ou shape que está mandando no parâmetro y, ele espera algo no formato (n_samples, ).

dados[['finalizado']].shape

Resultado:

(2157, 1)

Para ter o shape correto devemos usar apernas um colchetes:

dados['finalizado'].shape

Resultado:

(2157,)

Então no seu código, vamos ter isso:

#definindo o x e y
x = dados[['horas_esperadas', 'preco']]
y = dados['finalizado']

Já o segundo o Warning:

C:\Users\igor_\anaconda3\lib\site-packages\sklearn\svm\_base.py:947: ConvergenceWarning: Liblinear failed to converge, increase the number of iterations.
  "the number of iterations.", ConvergenceWarning)

É algo que explico nesse tópico, basta incluir o parâmetro dual como False:

#criando o modelo
modelo = LinearSVC(dual = False)

Espero ter ajudado, mas qualquer duvida não hesite em perguntar.

Bons Estudos.

Olá, Igor! Obrigado pela a ajuda.