关于 CVXOPT 求解二次规划问题报错

2020-11-26 19:06:29 +08:00
 zhuyongqi9

小弟用 SVM 高斯核,样本是西瓜书的西瓜数据集,一直报错,请问是什么问题

import scipy.io as sico
import numpy as np
import cvxopt
from numpy import linalg
from sklearn import preprocessing

dataFile='/Users/zhuyongqi/Desktop/机器学习 /数据集 /watermelon_3a.mat'
data=sico.loadmat(dataFile)
np.set_printoptions(suppress=True) 
a = data['watermelon_3a']

b=a[:,[0,1]]
features=a[:,2]
# 进行归一化处理
X_scaled = preprocessing.scale(b)
#高斯核
def gaussian_kernel(x, y, sigma=1.0):
    return np.exp(-np.dot((x-y),(x-y).T) / (2 * (sigma ** 2)))
    
n_samples, n_features = X_scaled.shape

K = np.zeros((n_samples, n_samples))
for i in range(n_samples):
    for j in range(n_samples):
        K[i,j] = gaussian_kernel(X_scaled[i], X_scaled[j])

E = np.ones([n_samples,1])
Y = np.zeros([n_samples,n_samples])
y = np.ones([n_samples,1])

for i in range (n_samples):
    y[i] = features[i]
y = y.T

for i in range (n_samples):
    Y[i][i] = features[i]

q = E
P = np.dot(Y,K,Y)
H = np.zeros([n_samples,1])

G = -1 * np.ones([n_samples,n_samples])

P = cvxopt.matrix(P,(17,17))
q = cvxopt.matrix(q,(17,1))
G = cvxopt.matrix(G,(17,17))
A = cvxopt.matrix(y,(1,17))
h = cvxopt.matrix(H,(17,1))
b = cvxopt.matrix(0.0)

sol = cvxopt.solvers.qp(P,q,G,h,A,b) 


报错情况:

Traceback (most recent call last):
  File "/Users/zhuyongqi/python/Experment_05/test.py", line 52, in <module>
    sol = cvxopt.solvers.qp(P,q,G,h,A,b) 
  File "/usr/local/anaconda3/lib/python3.8/site-packages/cvxopt/coneprog.py", line 4487, in qp
    return coneqp(P, q, G, h, None, A,  b, initvals, kktsolver = kktsolver, options = options)
  File "/usr/local/anaconda3/lib/python3.8/site-packages/cvxopt/coneprog.py", line 2067, in coneqp
    raise ValueError("Rank(A) < p or Rank([P; A; G]) < n")
ValueError: Rank(A) < p or Rank([P; A; G]) < n
1306 次点击
所在节点    机器学习
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/729601

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX