ValueError: найден массив с dim 3. Ожидается оценщик <= 2. >>> - PullRequest
0 голосов
/ 07 января 2019
#Import Library
from sklearn import svm
import numpy as np




X=np.array([
    [[25,25,25],[0,0,0],[0,0,0]],
    [[25,0,0],[25,0,0],[25,0,0]],
    [[75,75,75],[75,75,75],[75,75,75]]
           ])
y=np.array([-1,1,1]
           )


C=10

model = svm.SVC(kernel='rbf', C=10, gamma=0.6) 


model.fit(X, y)
model.score(X, y)

когда я пытался запустить этот код, я получил эту ошибку

ValueError: найден массив с dim 3. Ожидается оценщик <= 2. </p>

Я бы хотел, чтобы вы помогли мне решить эту ошибку. Я хочу обучить SVM для классификации пикселей изображения на два класса (ребро и не ребра), любые предложения будут полезны заранее, спасибо

Ответы [ 2 ]

0 голосов
/ 07 января 2019

model.fit нужен 2D массив, но ваш X - 3D. Конвертируйте X в 2D, используя np.concatenate

from sklearn import svm
import numpy as np

X=np.array([
    [[25,25,25],[0,0,0],[0,0,0]],
    [[25,0,0],[25,0,0],[25,0,0]],
    [[75,75,75],[75,75,75],[75,75,75]]
           ])
y=np.array([-1,1,1]
           )


X = [np.concatenate(i) for i in X]
print(X)
model = svm.SVC(kernel='rbf', C=10, gamma=0.6) 


model.fit(X, y)
model.score(X, y)
0 голосов
/ 07 января 2019

Я не знаю о проблемной области. Но это решает вашу ошибку,

#Import Library
from sklearn import svm
import numpy as np

X=np.array([
[[25,25,25],[0,0,0],[0,0,0]],
[[25,0,0],[25,0,0],[25,0,0]],
[[75,75,75],[75,75,75],[75,75,75]]
       ])
X = X.reshape(X.shape[0], -1)
y=np.array([-1,1,1])


C=10

model = svm.SVC(kernel='rbf', C=10, gamma=0.6) 


model.fit(X, y)
model.score(X, y)

Выход:

1.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...