感知机学习算法的对偶形式——代码

这段代码实现了一个简单的线性支持向量机(SVM)训练过程,使用了核矩阵方法。训练集包含六个样本,每个样本有两个特征,对应的类别标签为正负两类。通过迭代更新权重向量`w`和偏置项`b`,最终得到分类边界。此代码适用于理解SVM的基本工作原理。
摘要由CSDN通过智能技术生成

《统计学习方法》2.3

import numpy as np

trainingSet = np.mat([[1, 1], [2, 2], [1, 3], [3, 3], [5, 3], [3, 4]])
y = [1, 1, 1, -1, -1, -1]

# 计算Gram矩阵
m = np.shape(trainingSet)[0]
GramMatrix = [None] * m
for i in range(m):
    GramMatrix[i] = [0] * m
    for j in range(m):
        GramMatrix[i][j] = int(np.dot(trainingSet[i], trainingSet[j].T))

# 参数初始化
alpha = [0] * m
b = 0
eta = 1

# 开始训练
isFound = False
while not isFound:
    for i in range(m):
        temp = 0
        for j in range(m):
            temp += alpha[j] * y[j] * GramMatrix[j][i]

        if y[i] * (temp + b) <= 0:
            alpha[i] += 1 * eta
            b += y[i] * eta
            break
        elif i == m - 1:
            isFound = True

w = [0, 0]
for i in range(m):
    w += alpha[i] * trainingSet[i] * y[i]
print(w, b)

分类
在这里插入图片描述
参考文章:
https://blog.csdn.net/zuanfengxiao/article/details/79033800?ops_request_misc=%25257B%252522request%25255Fid%252522%25253A%252522161364812816780269868096%252522%25252C%252522scm%252522%25253A%25252220140713.130102334.pc%25255Fall.%252522%25257D&request_id=161364812816780269868096&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allfirst_rank_v2~rank_v29-1-79033800.first_rank_v2_pc_rank_v29_10&utm_term=%25E6%2584%259F%25E7%259F%25A5%25E6%259C%25BA%25E7%259A%2584%25E5%25AF%25B9%25E5%2581%25B6%25E5%25BD%25A2%25E5%25BC%258F%25E4%25BB%25A3%25E7%25A0%2581

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值