Я пишу код для реализации SVM для классификации рукописных цифр.
def PolynomialKernel(x,y,p):
return (np.matmul(x,y.T)+1)**p
def DualFunction(L):
return np.matmul((ytrain*ytrain),PolynomialKernel(xtrain,xtrain,1))-np.sum(L)
import scipy.optimize
cons = ({'type': 'eq',
'fun' : lambda L: np.array([np.matmul(L.T,ytrain)]),
'jac' : lambda L: np.array([np.sum(ytrain)])},
{'type': 'ineq',
'fun' : lambda L: np.array([L]),
'jac' : lambda L: np.array([1.0])})
result=scipy.optimize.minimize(DualFunction, L,constraints=cons, method='SLSQP', options={'disp': True})
result.x
Выходное сообщение было:
ValueError: Функция цели должна возвращать скаляр.
Почему?