Warnung vor Verfall in Sklearn über 1D-Array anzeigen, obwohl kein 1D-Array vorhanden ist

Ich versuche, mit SKLearn ein SVM-Modell auszuführen. Ich probiere es gerade mit einigen Beispieldaten aus. Hier sind die Daten und der Code:

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, wenn ich renne

import sklearn
sklearn.__version__

It gibt 0,17 aus.

Nun, wenn ich renneprint(clf.predict([1, 1])), Ich bekomme folgende Warnung:

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)

Es gibt mir eine Vorhersage, die großartig ist. Allerdings finde ich das aus ein paar Gründen komisch.

Ich habe kein 1d-Array. Wenn Sie A drucken, erhalten Sie

array([[ 9, 12],
       [ 2, 16],
       [14, 14],
       [ 4,  2],
       [ 8,  4],
       [12,  3],
       [ 0,  0],
       [ 3, 13],
       [15, 17],
       [15, 16]]) 

Welche mir zweidimensional erscheint. Aber okay, lassen Sie uns einfach sagen, dass ich tatsächlich ein 1D-Array habe. Versuchen wir es mit @ zu ändereshape, wie vom Fehler vorgeschlagen.

Der gleiche Code wie oben, aber jetzt haben wir

A = np.array([[random.randint(0, 20) for i in range(2)] for i in range(10)]).reshape(-1,1)

Aber dann gibt dies ein Array der Länge 20 aus, was keinen Sinn ergibt und nicht das ist, was ich will. Ich habe es auch mit @ probiereshape(1, -1) aber dann gibt mir das eine einzige Beobachtung / Liste mit 20 Elementen.

Wie kann ich meine Daten in numpy Arrays umformen, sodass diese Warnung nicht angezeigt wird?

Ich habe mir zwei Antworten auf SO angeschaut und keine hat bei mir funktioniert.Frage undFrage . Es scheint, dass Q1 tatsächlich 1D-Daten waren und mit @ gelöst wurdereshape, bei dem ich es versucht habe und gescheitert bin. Q2 hat eine Antwort darauf, wie man Warnungen und Fehler aufspürt, was ich nicht will. Die andere Antwort ist wieder eine Instanz eines 1D-Arrays.

Antworten auf die Frage(6)

Ihre Antwort auf die Frage