Recebendo aviso de desaprovação no Sklearn em uma matriz 1d, apesar de não ter uma matriz 1D
Estou tentando usar o SKLearn para executar um modelo SVM. Estou apenas experimentando agora com alguns dados de amostra. Aqui estão os dados e o código:
import numpy as np
from sklearn import svm
import random as random
A = np.array([[random.randint(0, 20) for i in range(2)] for i in range(10)])
lab = [0, 1, 0, 1, 0, 1, 0, 1, 0, 1]
clf = svm.SVC(kernel='linear', C=1.0)
clf.fit(A, lab)
FYI, quando eu corro
import sklearn
sklearn.__version__
Emite 0,17.
Agora, quando eu corroprint(clf.predict([1, 1]))
, Recebo o seguinte aviso:
C:\Users\me\AppData\Local\Continuum\Anaconda2\lib\site-packages\sklearn\ut
ils\validation.py:386: DeprecationWarning: Passing 1d arrays as data is deprecat
ed in 0.17 and willraise ValueError in 0.19. Reshape your data either using X.re
shape(-1, 1) if your data has a single feature or X.reshape(1, -1) if it contain
s a single sample.
DeprecationWarning)
Isso me dá uma previsão, o que é ótimo. No entanto, acho isso estranho por alguns motivos.
Eu não tenho uma matriz 1d. Se você imprimir A, você obtém
array([[ 9, 12],
[ 2, 16],
[14, 14],
[ 4, 2],
[ 8, 4],
[12, 3],
[ 0, 0],
[ 3, 13],
[15, 17],
[15, 16]])
O que me parece ser bidimensional. Mas tudo bem, vamos apenas dizer que o que eu tenho é de fato uma matriz 1D. Vamos tentar mudar usandoreshape
, conforme sugerido pelo erro.
O mesmo código acima, mas agora temos
A = np.array([[random.randint(0, 20) for i in range(2)] for i in range(10)]).reshape(-1,1)
Mas isso gera uma matriz de comprimento 20, que não faz sentido e não é o que eu quero. Eu também tentei comreshape(1, -1)
mas isso me dá uma única observação / lista com 20 itens.
Como posso remodelar meus dados em matrizes numpy para não receber esse aviso?
Eu olhei para duas respostas no SO e nenhuma funcionou para mim.Questão 1 eQuestão 2. Parece que o Q1 era na verdade dados 1D e foi resolvido usandoreshape
, no qual tentei e falhei. O Q2 tem uma resposta sobre como rastrear avisos e erros, que não é o que eu quero. A outra resposta é novamente uma instância de uma matriz 1D.