Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 用CVXPY求解SVM对偶形式时的DCPError_Python_Svm_Cvxpy_Cvxopt_Cvx - Fatal编程技术网

Python 用CVXPY求解SVM对偶形式时的DCPError

Python 用CVXPY求解SVM对偶形式时的DCPError,python,svm,cvxpy,cvxopt,cvx,Python,Svm,Cvxpy,Cvxopt,Cvx,我试图通过解决它的对偶形式,使用cvxpy创建一个SVM 代码如下: import cvxpy as cp import numpy as np DIM = 2 NUM = 50 #COLORS = ['red', 'blue'] M1 = np.ones((DIM,)) M2 = 2 * np.ones((DIM,)) C1 = np.diag(0.3 * np.ones((DIM,))) C2 = np.diag(0.2 * np.ones((DIM,))) def generate_

我试图通过解决它的对偶形式,使用cvxpy创建一个SVM

代码如下:

import cvxpy as cp
import numpy as np

DIM = 2
NUM = 50
#COLORS = ['red', 'blue']
M1 = np.ones((DIM,))
M2 = 2 * np.ones((DIM,))
C1 = np.diag(0.3 * np.ones((DIM,)))
C2 = np.diag(0.2 * np.ones((DIM,)))

def generate_gaussian(m, c, num):
     return np.random.multivariate_normal(m, c, num)

NUM = 50
x1 = generate_gaussian(M1, C1, NUM)
y1 = np.ones((x1.shape[0],))
x2 = generate_gaussian(M2, C2, NUM)
y2 = -np.ones((x2.shape[0],))
# join
x = np.concatenate((x1, x2), axis = 0)
y = np.concatenate((y1, y2), axis = 0)
print('x {} y {}'.format(x.shape, y.shape))

alphas = cp.Variable(2*NUM)
Cd = cp.Parameter()
Cd.value = 0.95

alphas_constraint_1 = [alphas[i] >=0 for i in range(2*NUM)]
alphas_constraint_2 = [alphas[i] <= Cd for i in range(2*NUM)]
alpha_y_constraint = [alphas@y.T == 0]

constraints = alphas_constraint_1 + alphas_constraint_2 + alpha_y_constraint

K = y[:,None]*x
K = np.dot(K,K.T)

objective_dual = cp.Minimize(-cp.sum(alphas)+cp.quad_form(alphas,K))

prob_dual = cp.Problem(objective_dual,constraints)
prob_dual.solve()
支持向量机的对偶形式怎么可能不是凸问题? 错误在哪里?我想不出来

我运行了这段代码:

expr1 = alphas.T@alphas
expr2 = cp.quad_form(alphas,K)
print(expr1.curvature, expr1.sign, expr1.is_dcp())
print(expr2.curvature, expr2.sign, expr2.is_dcp())
我得到的结果是相同的

UNKNOWN UNKNOWN False

我们无法帮助您,除非您提供完全复制您认为是错误的代码。特别是,您给出的代码片段没有运行。(什么是y?什么是x?@AkshayAgrawal我已经编辑了代码部分。我已经提供了完整的代码。
K
似乎是这里的问题。但无法找出问题产生的原因将问题线程发布到github此处:
UNKNOWN UNKNOWN False