机器学习技法 作业一

机器学习技法 作业一1 线性软间隔原始问题,有松弛变量。一共N+d+1个变量。2 变化之后发现分割线为z1=4.5z_{1}=4.5z1​=4.5。3 用ovxopt手撸一个svm,把系数对应上即可。ovxopt的接口系数与ppt上qp问题系数有正负号的变化,需要注意。起始也可以直接用sklearn的svm来做。选最后一项,代码如下:from cvxopt import solve...
摘要由CSDN通过智能技术生成

机器学习技法 作业一

1 线性软间隔原始问题,有松弛变量。一共N+d+1个变量。
在这里插入图片描述
2 变化之后发现分割线为 z 1 = 4.5 z_{1}=4.5 z1=4.5
在这里插入图片描述
3 用ovxopt手撸一个svm,把系数对应上即可。ovxopt的接口系数与ppt上qp问题系数有正负号的变化,需要注意。起始也可以直接用sklearn的svm来做。
在这里插入图片描述
选最后一项,代码如下:

from cvxopt import solvers, matrix
import numpy as np 

def kernel(x1,x2):
    return (1+np.dot(x1,x2))**2

xs = [[1,0],[0,1],[0,-1],[-1,0],[0,2],[0,-2],[-2,0]]
ys = np.array([-1,-1,-1,1,1,1,1])
Q = np.zeros((7,7))
for i in range(7):
    for j in range(7):
        Q[i][j] = ys[i]*ys[j]*kernel(np.array(xs[i]),np.array(xs[j]))

p = -np.ones(7)
A = np.zeros((9,7))
A[0] = ys
A[1] = -ys
for i in range(2,9):
    A[i][i-2] = -1
c = np.zeros(9)

P = matrix(Q)
q = matrix(p)
G = matrix(A)
h = matrix(c)

alphas = solvers.qp(P,q,G,h)
alphas = alphas['x']
print('max alpha:',np.max(alphas))
print('alpha sum:',np.sum(alphas))
print('min alpha:',np.min(alphas))
print('alphas:',alphas)

def kernelParameters(x):
    return np.array([x[0]*x[0],x[1]*x[1],2*x[0]*x[1],2*x[0],2*x[1],1])

w = np.zeros(6)
for i in range(7):
    w += alphas[i]*ys[i]*kernelParameters(xs[i])

b = ys[1]
for i in range(7):
    b -= alphas[i]*ys[i]*kernel(xs[i],xs[1])

print('x1*x1:',w[0],'x2*x2:',w[1],'x1*x2:',w[2],'x1:',w[3],'x2:',w[4],'1:',w[5])
print('b:',b)

4 用上面代码把系数打印出来对应一下就知道了。第四个。
在这里插入图片描述
5 第一项。支持向量如果不一样那结果不一样,支持向量如果一样,用不同核函数结果也不一样。
在这里插入图片描述
6 拉格朗日。最后一项。
在这里插入图片描述
7 模仿写出kkt条件即可。选第二个和最后一个。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值