码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 向量机SVM代码实现


    支持向量机(SVM, Support Vector Machines)是一种广泛应用于分类、回归、甚至是异常检测的监督学习算法。自从Vapnik和Chervonenkis在1995年首次提出,SVM算法就在机器学习领域赢得了巨大的声誉。这部分因为其基于几何和统计理论的坚实数学基础,也因为其在实际应用中展示出的出色性能。

    代码实现

    在这一部分中,我们将使用Python和PyTorch库来实现一个基础的支持向量机(SVM)。我们会遵循以下几个主要步骤:

    1. 数据预处理:准备用于训练和测试的数据。
    2. 模型定义:定义SVM模型的架构。
    3. 优化器选择:选择合适的优化算法。
    4. 训练模型:使用训练数据来训练模型。
    5. 评估模型:使用测试数据来评估模型的性能。
    1. import torch
    2. # 创建训练数据和标签
    3. X_train = torch.FloatTensor([[1, 1], [1, 2], [1, 3], [2, 1], [2, 2], [2, 3]])
    4. y_train = torch.FloatTensor([1, 1, 1, -1, -1, -1])
    5. # 创建测试数据
    6. X_test = torch.FloatTensor([[1, 0.5], [2, 0.5]])

     模型定义

    1. class LinearSVM(torch.nn.Module):
    2. def __init__(self):
    3. super(LinearSVM, self).__init__()
    4. self.weight = torch.nn.Parameter(torch.rand(2), requires_grad=True)
    5. self.bias = torch.nn.Parameter(torch.rand(1), requires_grad=True)
    6. def forward(self, x):
    7. return torch.matmul(x, self.weight) + self.bias

    优化器选择

    1. # 实例化模型和优化器
    2. model = LinearSVM()
    3. optimizer = torch.optim.SGD([model.weight, model.bias], lr=0.01)

    训练模型

    1. # 设置训练轮次和正则化参数C
    2. epochs = 100
    3. C = 0.1
    4. for epoch in range(epochs):
    5. for i, x in enumerate(X_train):
    6. y = y_train[i]
    7. optimizer.zero_grad()
    8. # 计算间隔损失 hinge loss: max(0, 1 - y*(wx + b))
    9. loss = torch.max(torch.tensor(0), 1 - y * model(x))
    10. # 添加正则化项: C * ||w||^2
    11. loss += C * torch.norm(model.weight)**2
    12. loss.backward()
    13. optimizer.step()

    评估模型

    1. with torch.no_grad():
    2. for x in X_test:
    3. prediction = model(x)
    4. print(f"Prediction for {x} is: {prediction}")

  • 相关阅读:
    Spring | 依赖注入详解(DI)
    设计模式面试题(总结最全面的面试题!!!)
    FPGA高端项目:图像采集+GTX+UDP架构,高速接口以太网视频传输,提供2套工程源码加QT上位机源码和技术支持
    Leetcode 142. 环形链表 II Linked List Cycle II - Python 双指针法
    python 集合(set)
    高级计量经济学(part2)--小样本OLS
    第三部分—数据结构与算法基础_3. 受限线性表
    vue3 el-form中嵌套el-tabale 对输入动态校验
    MTX-Ovalbumin 甲氨蝶呤修饰卵清蛋白 Methotrexate-Ovalbumin
    一文告诉你什么是 Kubernetes
  • 原文地址:https://blog.csdn.net/softshow1026/article/details/134498700
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号