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

Erro ao "printar" a acurácia

Olá! Espero que o "printar" tenha chamado a atenção para que alguém me ajude nesse caso aqui :) Enfim, após completar a aula 2 "Lendo dados da internet e manipulando os mesmos" do curso de Machine Learning, módulo 2, "Testes replicáveis, estratificação,...", tive um pequeno problema no fim do código, ao estampar a acurácia. O código é exatamente o mesmo da aula. Porém o resultado é o seguinte: A acurácia foi 95.83% /usr/local/lib/python3.7/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)

Alguém pode me explicar esse erro? Obrigada M.

2 respostas
solução!

Oii Myrelle, tudo bem?

O aviso está ocorrendo porque o Python está esperando um vetor em y e você está passando uma matriz, ele não afeta em nada o seu resultado ali, porém você pode tentar dessa forma:

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

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

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

Na linha de modelo.fit(treino_x, treino_y.values.ravel()) você pode ver que adicionei o .values e o .ravel(). O .values vai fornecer esse valor num array (n,1) e o .ravel() converte esse array para (n,), fazendo com que aquele erro não aconteça de novo.

Teste do código acima para demonstração de que funciona o método para retirar o aviso que estava aparecendo anteriormente

Eu testei por aqui e deu certo, você consegue testar o código ai e me dizer se conseguiu? Caso não dê certo ainda, pode me avisar que tentamos de outra forma :)

Bons estudos ^^

Oi Sthefanie!

Você tem razão, adicionei à linha que você indicou o "values.ravel()" e deu certinho! Estou seguindo adiante com o curso para terminar o módulo hoje e rever tudo desde o início para reforçar. Eeeeeeh, ainda tenho que comer muito arroz com feijão para chegar lá ;)

Obrigada! Myrelle