【高性能计算】监督学习之支持向量机分类实验

news2025/2/22 3:31:00

【高性能计算】监督学习之支持向量机分类实验

  • 实验目的
  • 实验内容
  • 实验步骤
  • 1、支持向量机算法
    • 1.1 支持向量机算法的基本思想
    • 1.2 支持向量机算法的分类过程
    • 1.3 支持向量机算法的模型构建过程
  • 2、使用Python语言编写支持向量机的源程序代码并分析其分类原理
    • 2.1 支持向量机SVM模型代码
      • 2.1.1 计算SVM中使用的核函数calcKernelValue()
      • 2.1.2 向量机(SVM)模型的训练和测试
      • 2.1.3 SVM模型的测试代码
    • SVM的优缺点:
  • 实验小结


实验目的

  1. 叙述支持向量机算法的基本思想;
  2. 描述支持向量机算法的整个分类过程;

实验内容

  1. 利用支持向量机对给定数据集进行分类识别;
  2. 对比支持向量机在不同参数设定下的分类性能;
  3. 对支持向量机算法的分类性能进行评估。

实验步骤

1、支持向量机算法

1.1 支持向量机算法的基本思想

       支持向量机(Support Vector Machine,简称SVM)是一种常见的机器学习算法,其基本思想是在高维空间中构建一个超平面,用于分类或回归任务。
       具体而言,SVM首先将数据映射到高维空间,并在该空间中找到一个最优的超平面,使得该超平面能够将不同类别的数据点有效地分开。其中,对于最优超平面的定义是使得间隔最大化,即离超平面最近的数据点到超平面的距离最大化。这些最靠近超平面的样本点被称为支持向量。
       SVM最终分类的过程是将新的数据点映射到高维空间,并根据其位置与最优超平面的关系来进行分类。如果新数据点在超平面正侧,则属于正类;反之则属于负类。


1.2 支持向量机算法的分类过程

       支持向量机算法的分类过程主要包括以下几个步骤:

  1. 数据预处理:对原始数据进行特征提取和特征选择,将数据转化为合适的形式。
  2. 特征映射:将原始的特征空间通过某个映射函数映射到高维特征空间,使得数据在该空间中线性可分。
  3. 最优超平面的选择:在高维特征空间中寻找一个最优的超平面来将不同类别的样本点分开。其中最优超平面满足:离超平面最近的样本点到超平面的距离最大化。
  4. 支持向量的确定:确定最优超平面上的支持向量,即距离超平面最近的数据点。
  5. 分类:将新的样本点投影到高维特征空间中,并根据其位置(在最优超平面的哪一侧)和超平面来进行分类,即按照所在的类别标签进行打标。

       具体而言,在分类过程中,我们使用 SVM 学习得到的最优超平面对新样本进行分类。首先将新样本映射到高维特征空间中。然后,计算测试样本与最优超平面之间的距离(距离的计算是以超平面上的支持向量计算的)。如果该距离小于某个预设阈值,则将该测试样本分类为正类;否则,将该测试样本分类为负类。这个预设阈值就是 SVM 的决策边界(discriminative boundary)所对应的距离(或称为"裕度",margin)。因此 SVM 对新样本的分类结果取决于它与决策边界(即分离超平面)之间的距离。
       总之,SVM 通过特征映射和最优超平面的选择,将不同类别的样本点分开,并在测试时,通过计算距离来对新的样本点进行分类。超平面实现分类效果、以及各个参数之间关系可参考图一。

图1 超平面实现分类效果


1.3 支持向量机算法的模型构建过程

       SVM(Support Vector Machine)的模型构建流程通常包括以下步骤:

  1. 数据收集与预处理:收集相关数据并进行数据清洗、变换、标准化等预处理工作,以保证数据质量和可用性。
  2. 特征选择与提取:选择合适的特征变量作为模型输入,或者从现有特征中提取新的特征变量。特征选择和提取是 SVM 模型中非常关键的一环,它们往往对最终模型的表现产生重要影响。
  3. 训练数据集划分:将收集到的数据划分为训练数据集和测试数据集,以便在训练过程中验证模型的准确性和性能。
  4. 核函数和参数选择:选择合适的核函数和参数,这决定了 SVM 在特征空间中寻找决策边界的能力。常用的核函数有线性核、多项式核、高斯径向基核等,不同的核函数及其参数设定会影响模型的分类性能。
  5. SVM 模型训练:使用训练数据集进行模型训练,求解最优解,即找到合适的超平面和分类边界,使得两类样本之间的距离最大化,并且满足一定约束条件。
  6. 模型评估:使用测试数据集对模型进行性能评估,包括计算模型的准确率、召回率、F1 值等指标,以判断模型效果的好坏。
  7. 模型的调优和改进:根据评估结果,对模型进行调优和改进,包括优化模型参数、特征选择和提取方法等方面,以提高模型的泛化能力和分类性能。
  8. 模型应用:将优化后的 SVM 模型应用于实际问题中,进行样本分类和预测,以实现数据分析和决策支持等功能。图二展示了其中一个训练模型,图三则展示出常见的核函数。

图2  SVM的训练模型

图3 常见的核函数


2、使用Python语言编写支持向量机的源程序代码并分析其分类原理

2.1 支持向量机SVM模型代码

2.1.1 计算SVM中使用的核函数calcKernelValue()

       用于计算核函数值的函数,其实现了线性核和径向基函数(RBF)核。该函数通过循环逐个计算每个样本与待测样本之间的核函数值,并将结果存储在一个数组中返回。这些核函数值将在后续步骤中用于计算支持向量机模型的决策边界和预测结果。
(1) 首先获取了输入矩阵 matrix_x 的总行数,即数据集中的样本数目 numSamples。
(2) 如果 kernelType 为 ‘linear’,那么就使用线性核函数计算 kernelValue,这里直接使用矩阵乘法计算所有训练样本与待计算样本的内积;
(3) 如果 kernelType 为 ‘rbf’,那么就使用径向基函数(RBF)核计算 kernelValue,这里计算每个训练样本与待计算样本之间的欧氏距离,并根据参数 sigma 计算出高斯核函数的值。
(4) 如果 kernelType 不是 ‘linear’ 或 ‘rbf’,则会抛出一个 NameError 异常。最后,该函数返回 kernelValue,即所有样本和待计算样本之间的核函数值。图4为SVM中核函数的具体实现:

图4  SVM中核函数的具体实现

2.1.2 向量机(SVM)模型的训练和测试

       实现了一个支持向量机(SVM)模型的训练和测试。使用的是Sequential Minimal Optimization(SMO)算法来求解SVM的优化问题,其中包含了计算样本之间核函数值、选择优化参数、更新阈值等步骤。此外还有对于数据可视化和模型准确度计算的函数。需要注意的是,此段代码只适用二维数据的可视化。
       这段代码定义了一个SVMStruct类,用于存储SVM模型的相关参数和数据,其中包括:

SVMStruct初始化:创建存储变量和数据的结构体,并且初始化一些变量值;
calcError函数:计算优化参数的误差值;
selectAlpha_j函数:选择第二个优化参数;
innerLoop函数:SMO算法中的内循环,用于更新alpha的值;
trainSVM函数:整个SVM模型的训练过程;
testSVM函数:使用测试集来测试训练好的SVM模型的准确度;
showSVM函数:用于在二维数据上可视化SVM模型的结果。

下图展示了其中innerLoop函数的核心代码:

图5 内循环部分中的核心代码


2.1.3 SVM模型的测试代码

       这段代码实现对SVM算法的测试,具体包括以下步骤:

  1. 从文件’testSet.txt’中读取数据,并将其处理为Numpy矩阵类型,其中前80个样本作为训练数据train_x、train_y,后20个样本作为测试数据test_x、test_y。
  2. 使用SVM.trainSVM函数在训练数据集上训练SVM模型,得到svmClassifier。
  3. 使用SVM.testSVM函数对测试数据集进行测试,得到分类准确率accuracy。
  4. 使用SVM.showSVM函数展示SVM模型在二维空间内的分类结果。

       主要作用是对SVM算法的正确性进行验证,通过测试样例来检验实现是否正确和有效。
图6则展示了这段代码的测试结果。

图6  SVM算法的测试结果


SVM的优缺点:

优点:

1、在高维空间中⾮常高效;
2、即使在数据维度⽐样本数量⼤的情况下仍然有效;
3、在决策函数(称为支持向量)中使用训练集的子集,因此它也是⾼效利用内存的;
4、通用性:不同的核函数与特定的决策函数⼀⼀对应;

缺点:

1、SVM算法对于大规模数据处理较为困难,计算复杂度较高;
2、对于多分类问题,需要进行多次二分类,计算量较大;
3、对于不平衡数据集,SVM算法可能会出现过拟合的情况;
4、SVM算法在确定核函数类型、参数设置等方面存在一定的主观性和经验性。


实验小结

       通过本次实验,我能够熟练叙述支持向量机算法的基本思想;描述支持向量机算法的整个分类过程。可以根据实验内容完成使用Python语言编写支持向量机算法的源程序代码并分析其分类原理。在实验过程中遇到了很多硬件或者是软件上的问题,请教老师,询问同学,上网查资料,都是解决这些问题的途径。最终将遇到的问题一一解决最终完成实验。


       支持向量机(SVM)算法在分类性能上的表现受到参数设定的影响较大,其中两个主要的参数是核函数类型和正则化参数。不同的参数设定可能会对SVM的分类性能产生不同的影响。以下是比较不同参数设定下SVM分类性能的方法:
核函数类型:
       SVM算法采用核函数实现对数据特征空间的映射,从而实现非线性分类。通常情况下,我们可以使用多项式核函数、径向基函数等不同类型的核函数来处理不同的数据集。
正则化参数:
       SVM中的正则化参数C对模型复杂度和泛化能力有重要影响。当C的值较小时,相当于对模型做了更强的正则化,更倾向于选择一个较小的分隔超平面,性能更加稳定,但容易产生欠拟合;当C的值较大时,相当于对模型的约束比较少,可能出现过拟合的情况。
       因此,对比SVM在不同参数设定下的分类性能,需要进行实验比较:
1、选取几类不同的核函数类型,比较它们在相同的数据集上的分类性能;
2、在使用相同核函数的情况下,对C参数进行调整,比较它们的分类性能;
3、绘制学习曲线和验证曲线来判断模型是否过拟合或欠拟合。
       通过以上实验比较,可以得出最优的SVM参数设定,以达到最好的分类性能。需要注意的是,SVM的参数设定与数据集密切相关,需要针对不同的数据集进行调整。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/671371.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

四、卷积神经网络整体基础结构

一、计算机发展应用 神经网络主要用于特征提取 卷积神经网络主要应用在图像领域,解决传统神经网络出现的过拟合、权重太多等风险 1,CV领域的发展 Computer vision计算机视觉的发展在2012年出现的AlexNet开始之后得到了挽救 之前都是一些传统的机器学习…

SQL高级语句2

SQL高级语句2 SQL高级语句17.---- 连接查询 ----18.自我连接,算排名:19.---- CREATE VIEW ----视图,可以被当作是虚拟表或存储查询。20.---- UNION ----联集,将两个SQL语句的结果合并起来,两个SQL语句所产生的字段需要…

重新定义DevOps:容器化的变革力量

在快速发展的数字时代,DevOps 已成为重塑软件开发格局的重要范例。DevOps 是一个源自“开发”和“运营”的术语,它将这两个历史上孤立的功能集成到一个统一的方法中,专注于缩短软件开发生命周期。因此,DevOps 实践促进了更快、更可…

【产品应用】一体化电机在拉伸吹瓶机的应用

随着塑料瓶的广泛应用,拉伸吹瓶机作为生产塑料瓶的关键设备之一,受到了越来越多企业的关注。而在拉伸吹瓶机中,一体化电机的应用正逐渐成为行业的新趋势。 01.设备简介 吹瓶机是一种用于制造塑料瓶的机械设备。它通过将预先加热的塑料颗粒或…

当 MQTT 遇上 ChatGPT:探索可自然交互的物联网智能应用

前言 随着物联网技术的迅猛发展,人与设备、设备与设备之间的互动已变得不再困难,而如何更加自然、高效、智能地实现交互则成为物联网领域新的挑战。 近期,由 OpenAI 发布的 ChatGPT、GPT-3.5 和 GPT-4 等先进大语言模型(LLM&…

python 基础知识:使用jieba库对文本进行分词

前言 嗨喽,大家好呀~这里是爱看美女的茜茜呐 一、jieba库是什么? Python的jieba库是一个中文分词工具,它可以将一段中文文本分割成一个一个的词语,方便后续的自然语言处理任务,如文本分类、情感分析等。 jieba库使用…

Riddztecia 作品集 |Beast Wear 出品

Beast & Wear:一个以彩色部落和可训练野兽庆祝多样性的收藏品。通过 NFT 野兽和装备提升你的 Riddzee 人物化身,增强视觉效果,提升你在迷人的 Riddztecia 世界中的游戏体验。去游戏、去成长、去探索。 Riddztecia NFT 空投包括训练怪兽和…

leetcode216. 组合总和 III(回溯算法-java)

组合总和 III leetcode216. 组合总和 III题目描述解题思路代码演示 回溯算法专题 leetcode216. 组合总和 III 来源:力扣(LeetCode) 链接:https://leetcode.cn/problems/combination-sum-iii 题目描述 找出所有相加之和为 n 的 k 个…

JMeter 批量接口测试

一、背景 最近在进行某中台的接口测试准备,发现接口数量非常多,有6、70个,而且每个接口都有大量的参数并且需要进行各种参数验证来测试接口是否能够正确返回响应值。想了几种方案后,决定尝试使用JMeter的csv读取来实现批量的接口…

Linux修改权限chown和chmod指令

一、 chmod指令修改文件权限 -rw-rw-r-- 1 zcb zcb 1135 Jun 9 14:56 test.c drwx------ 2 root root 4096 Apr 7 16:50 testemmc/ 上面两个文件,第一个字符-和d,分别表示二进制文件,目录,后面9个分别表示 u:拥有者…

【CV 向】了解 OpenCV 中的算术与位运算

文章目录 引言1. 利用 NumPy 创建图像2. 算术运算2.1 加法与减法2.2 乘法与除法 3. 位运算3.1 与运算3.2 或运算3.3 异或运算3.4 非运算 结论 引言 Python OpenCV 是一个功能强大的计算机视觉库,用于图像处理和计算机视觉任务。在 OpenCV 中,我们可以使…

【Python脚本】Python自动大麦网抢票,准点原价秒杀演唱会门票,拒绝黄牛交易!从我做起!!!1

文章目录 前言一、分析购票过程二、Selenium 模拟浏览器操作三、逆向工程:抢票接口总结 前言 你是否错过了周杰伦的票,最近又没抢到五月天的票,不要太难过,今晚有张学友的票,后天还有张杰的票,加油哦&…

openvpn搭建访问路由器摄像头

openvpn搭建 技术博客 http://idea.coderyj.com/ 1.环境 华为云服务器 操作系统 centos7 2.安装部署 1.安装 openvpn 和 easy-rsa(该包用来制作 ca 证书) # 安装 epel 源 yum install epel-release -y# 安装 yum install openvpn easy-rsa2、配置 /e…

如何全面评价一个低代码平台?

🐱 个人主页:不叫猫先生,公众号:前端舵手 🙋‍♂️ 作者简介:2022年度博客之星前端领域TOP 2,前端领域优质作者、阿里云专家博主,专注于前端各领域技术,共同学习共同进步…

Goby 漏洞发布|WordPress Extensive VC Addons 插件 options[template] 文件包含漏洞

漏洞名称:WordPress Extensive VC Addons 插件 options[template] 文件包含漏洞 English Name:WordPress Plugin Extensive VC Addons File Inclusion Vulnerability CVSS core: 9.8 影响资产数:2583 漏洞描述: Extensive VC…

Netty核心技术七--Google Protobuf

1.编码和解码的基本介绍 编写网络应用程序时,因为数据在网络中传输的都是二进制字节码数据,在发送数据时就需要编码,接收数据时就需要解码 codec(编解码器) 的组成部分有两个:decoder(解码器)和encoder(编码器)。encoder 负责把…

【干货】Android系统定制基础篇:第十六部分(双屏异触、定时开关机与看门狗)

一、Android双屏异触-指定触摸为副屏触摸 在双屏异显产品中,有时候主副屏都带有触摸屏,并且要求主副屏触摸各自操作互不干扰。 Android 现有框架中已经支持副输入设备的逻辑,只是默认将所有的外部热插拔设备统一指定为副输入设备&#xff0…

XILINX 7系列FPGA封装之芯片常见封装技术详解

🏡《Xilinx FPGA开发指南》 目录 1,概述2,常用封装技术2.1,Wire-bond chip-scale2.2,Wire-bond fine-pitch2.3,Flip-chip lidless2.4,Ruggedized flip-chip2.5, Flip-chip fine-pitc…

【算法设计与分析】期末复习

文章目录 复习大纲第一章算法概述1.1算法与程序1.2 算法复杂性分析 第二章递归与分治策略分治法的基本思想递归与分治的关系:用分治法解决的问题的几个特征:例题: 第三章动态规划动态规划的基本思想:分治与动态规划算法的异同&…

mine vpn

client remote ‘whvpn.deepin.com’ 1194 auth-user-pass dev tun proto tcp nobind auth-nocache script-security 2 persist-key persist-tun user nm-openvpn group nm-openvpn -----BEGIN CERTIFICATE----- MIIDPDCCAiSgAwIBAgIUUTvTCz6BndUDTIVTBxpKL19mEMkwDQYJKoZIhvcN…