【问题标题】:CVXOPT QP Solver: TypeError: 'A' must be a 'd' matrix with 1000 columnsCVXOPT QP Solver: TypeError: 'A' must be a 'd' matrix with 1000 columns
【发布时间】:2023-04-07 04:43:01
【问题描述】:

我正在尝试使用 CVXOPT qp 求解器来计算支持向量机的拉格朗日乘数

def svm(X, Y, c):
      m = len(X)
      P = matrix(np.dot(Y, Y.T) * np.dot(X, X.T))
      q = matrix(np.ones(m) * -1)
      g1 = np.asarray(np.diag(np.ones(m) * -1))
      g2 = np.asarray(np.diag(np.ones(m)))
      G = matrix(np.append(g1, g2, axis=0))
      h = matrix(np.append(np.zeros(m), (np.ones(m) * c), axis =0))
      A = np.reshape((Y.T), (1,m))
      b = matrix([0])

      print (A).shape

      A = matrix(A)

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

这里X 是一个1000 X 2 矩阵,Y 具有相同数量的标签。求解器抛出以下错误: $ python svm.py (1, 1000) Traceback (most recent call last): File "svm.py", line 35, in <module> svm(X, Y, 50) File "svm.py", line 29, in svm sol = solvers.qp(P, q, G, h, A, b) File "/usr/local/lib/python2.7/site-packages/cvxopt/coneprog.py", line 4468, in qp return coneqp(P, q, G, h, None, A, b, initvals, options = options) File "/usr/local/lib/python2.7/site-packages/cvxopt/coneprog.py", line 1914, in coneqp %q.size[0]) TypeError: 'A' must be a 'd' matrix with 1000 columns

我打印了 A 的形状,它是一个 (1,1000) 矩阵,它是从一个向量重塑后的。究竟是什么导致了这个错误?

【问题讨论】:

  • 也尝试打印A.typecode,是'd'吗?
  • 如果不是,请在将其转换为矩阵之前尝试执行 A=A.astype(double)。
  • 就是这样。类型是 'i'。在matrix(A, (1, m), 'd') 中添加了 tc 变量,它起作用了!如果您想添加它作为答案,我可以接受!

标签: python svm typeerror cvxopt quadratic-programming


【解决方案1】:

您的矩阵元素也必须是浮点类型。因此,通过使用A = A.astype('float') 进行转换来消除错误。

【讨论】:

  • 你的意思是 A=A.astype(float)
【解决方案2】:

我已经尝试A=A.astype(double) 来解决它,但它是无效的,因为 python 不知道 double 是什么或者 A 没有方法 astype。

因此

通过使用 A = matrix(A, (1, m), 'd') 居然可以解决这个问题!

【讨论】:

    【解决方案3】:

    错误-"TypeError: 'A' must be a 'd' matrix with 1000 columns:"有两种情况:

    1. 如果类型代码不等于'd'
    2. 如果A.size[1] != c.size[0]

    检查这些条件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-27
      • 2012-06-14
      • 2021-06-25
      • 2017-04-08
      相关资源
      最近更新 更多