• 向量机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}")

  • 相关阅读:
    【计算机网络】扩展以太网方法总结
    以目标检测和分类任务为例理解One-Hot Code
    C++----IO流(参考C++ primer)
    CVE-2023-25194 Kafka JNDI 注入分析
    2018ECCV Can 3D Pose be Learned from2D Projections Alone?
    MQTT 保留消息是什么?如何使用?
    【MySQL】测试题03
    Django测试与持续集成:从入门到精通
    【Vue】自定义指令
    计算机视觉与深度学习-经典网络解析-VGG-[北邮鲁鹏]
  • 原文地址:https://blog.csdn.net/softshow1026/article/details/134498700