Я пытаюсь использовать SKLearn для запуска SVM-модели. Я просто пытаюсь это сделать сейчас с некоторыми примерами данных. Вот данные и код:
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, когда я запустил
import sklearn
sklearn.__version__
Он выводит 0,17.
Теперь, когда я запускаю print(clf.predict([1, 1]))
, я получаю следующее предупреждение:
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)
Это дает мне предсказание, и это здорово. Тем не менее, я нахожу это странным по нескольким причинам.
У меня нет 1d массива. Если вы печатаете A, вы получаете
array([[ 9, 12],
[ 2, 16],
[14, 14],
[ 4, 2],
[ 8, 4],
[12, 3],
[ 0, 0],
[ 3, 13],
[15, 17],
[15, 16]])
Который кажется мне двумерным. Но все в порядке, давайте просто скажем, что то, что у меня есть, на самом деле является 1D-массивом. Попробуйте изменить его с помощью reshape
, как это было предложено ошибкой.
Тот же код, что и выше, но теперь мы имеем
A = np.array([[random.randint(0, 20) for i in range(2)] for i in range(10)]).reshape(-1,1)
Но тогда это выводит массив длиной 20, что не имеет смысла и не то, что я хочу. Я также пробовал его с помощью reshape(1, -1)
, но тогда это дает мне один список наблюдений/список с 20 элементами в нем.
Как я могу изменить свои данные в массивах numpy, чтобы я не получил это предупреждение?
Я посмотрел два ответа на SO, и ни один из них не работал у меня. Вопрос 1 и Вопрос 2. Похоже, что Q1 был фактически 1D-данными и был решен с помощью reshape
, который я пробовал и терпел неудачу. Q2 имеет ответ о том, как отслеживать предупреждения и ошибки, чего я не хочу. Другой ответ снова является экземпляром 1D-массива.