支持向量机(SVM)基础教程
一、引言
支持向量机(Support Vector Machine,简称SVM)是一种高效的监督学习算法,广泛应用
于分类和回归分析。SVM以其强大的泛化能力、简洁的数学形式和优秀的分类效果而备受机器学
习领域的青睐。
二、SVM基本原理
2.1 最大间隔分类器
SVM的核心目标是寻找一个最优的超平面,该超平面能够将不同类别的样本尽可能完美地分
开,并且最大化分类间隔。分类间隔是指超平面到最近的数据点的距离,这个距离越大,模型的泛
化能力通常越强。
2.2 函数间隔与几何间隔
函数间隔:一个标量,表示超平面正确分类样本的程度。
函数间隔越大,表示分类器的信心越强。
几何间隔:函数间隔的归一化形式,考虑了超平面的法向量。
几何间隔更直观地反映了数据点到超平面的实际距离。
2.3 支持向量
支持向量是那些位于分类间隔边缘的数据点。
在最优超平面确定后,只有支持向量对超平面的位置有影响,而其他数据点则不会影响超平
面的位置。
三、SVM算法步骤
3.1 数据预处理
在应用SVM之前,通常需要对数据进行预处理,包括特征缩放、去除缺失值、异常值处理
等,以确保算法的性能不受数据尺度的影响。
3.2 构建优化问题
SVM的优化问题可以表述为
3.3 求解优化问题 
3.4 计算超平面参数

3.5 构建分类器

四、SVM应用实例
下面是一个使用Python和scikit-learn库实现SVM分类器的示例。
4.1 导入数据
import numpy as npimport matplotlib.pyplot as pltfrom sklearn import datasets# 导入数据集X, y = datasets.make_blobs(n_samples=50, centers=2, random_state=6)
4.2 训练SVM模型
from sklearn.svm import SVCfrom sklearn.preprocessing import StandardScaler# 数据归一化scaler = StandardScaler()X_scaled = scaler.fit_transform(X)# 创建SVM模型clf = SVC(kernel='linear', C=1.0)# 训练模型clf.fit(X_scaled, y)
4.3 可视化分类结果
# 绘制数据点plt.scatter(X_scaled[:, 0], X_scaled[:, 1], c=y, cmap=plt.cm.Paired,edgecolors='k')# 绘制超平面ax = plt.gca()xlim = ax.get_xlim()ylim = ax.get_ylim()xx = np.linspace(xlim[0], xlim[1], 30)yy = np.linspace(ylim[0], ylim[1], 30)YY, XX = np.meshgrid(yy, xx)xy = np.vstack([XX.ravel(), YY.ravel()]).TZ = clf.decision_function(xy).reshape(XX.shape)ax.contour(XX, YY, Z, colors='k', levels=[-1, 0, 1], alpha=0.5, linestyles=['--', '-', '--'])# 绘制支持向量ax.scatter(clf.support_vectors_[:, 0], clf.support_vectors_[:, 1], s=100,facecolors='none', edgecolors='k')plt.title('SVM with Linear Kernel')plt.show()
4.4 结果分析
运行上述代码,我们可以得到如下分类结果图:

从图中可以看出,SVM成功地将两类数据分开,并且找到了最大间隔的超平面。
黑色实线表示最优超平面,黑色虚线表示分类间隔。
红色和蓝色点表示不同类别的样本点,黑色圆圈表示支持向量。
五、SVM的核技巧
当数据不是线性可分时,SVM可以通过引入核技巧来处理非线性问题。
核技巧允许SVM在原始特征空间中非线性地映射数据到高维特征空间,然后在高维空间中寻
找最优超平面。
5.1 常见的核函数
5.2 选择合适的核函数
选择合适的核函数对于SVM的性能至关重要。
通常,我们可以通过交叉验证和网格搜索来找到最优的核函数和参数。
六、SVM参数选择
在实现支持向量机(SVM)时,参数的选择对模型的性能有着决定性的影响。
下面是一些关键的SVM参数及其详细说明:
1. 正则化参数 C
定义:C是SVM中的一个正则化参数,它控制着模型对误分类的容忍度。
在SVM中,我们希望找到一个既能最大化分类间隔又能最小化误分类的决策边界。
作用
当C值较大时,模型会尝试将所有训练样本正确分类,这可能会导致模型过于复杂,从而产生
过拟合。过拟合意味着模型在训练数据上表现很好,但在未见过的新数据上表现不佳。
当C值较小时,模型允许更多的误分类,这可能会导致欠拟合。欠拟合的模型过于简单,无法
捕捉数据的真实结构。
调整建议
如果训练误差远低于验证误差,可能是因为模型过拟合,此时应减小C值。
如果训练误差和验证误差都很高,可能是因为模型欠拟合,此时应增大C值。
通常,通过交叉验证来选择合适的C值,以找到泛化能力最强的模型。
2. 核函数参数
定义:核函数参数决定了核函数的形状和映射方式,这些参数对于处理非线性问题至关重
要。
常见的核函数参数有:

调整建议
核函数参数的选择通常依赖于数据集的特性。
可以通过网格搜索和交叉验证来找到最优的参数组合。 
3. 核函数类型
定义:核函数类型决定了数据在特征空间中的映射方式。
选择合适的核函数
对于线性可分的数据,线性核函数通常是最佳选择,因为它简单且计算效率高。
对于非线性问题,可以选择多项式核、RBF核或sigmoid核。
选择核函数时,需要考虑数据的分布和问题的复杂性。
通常,RBF核是一个通用的选择,因为它可以映射到无限维的特征空间。
七、总结
本文详细介绍了支持向量机(SVM)的基本原理、算法步骤、核技巧以及在Python中的实
现。
SVM是一种强大的机器学习算法,适用于多种分类和回归问题。但是SVM的性能受核函数和
参数选择的影响较大,因此在实际应用中,需要根据具体问题进行适当的调整和优化。
相关文章:
支持向量机(SVM)基础教程
一、引言 支持向量机(Support Vector Machine,简称SVM)是一种高效的监督学习算法,广泛应用 于分类和回归分析。SVM以其强大的泛化能力、简洁的数学形式和优秀的分类效果而备受机器学 习领域的青睐。 二、SVM基本原理 2.1 最大间…...
Python小示例——质地不均匀的硬币概率统计
在概率论和统计学中,随机事件的行为可以通过大量实验来研究。在日常生活中,我们经常用硬币进行抽样,比如抛硬币来决定某个结果。然而,当我们处理的是“质地不均匀”的硬币时,事情就变得复杂了。质地不均匀的硬币意味着…...
京东web 京东e卡绑定 第二部分分析
声明 本文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关! 有相关问题请第一时间头像私信联系我删…...
【数据结构与算法】Greedy Algorithm
1) 贪心例子 称之为贪心算法或贪婪算法,核心思想是 将寻找最优解的问题分为若干个步骤每一步骤都采用贪心原则,选取当前最优解因为没有考虑所有可能,局部最优的堆叠不一定让最终解最优 贪心算法是一种在每一步选择中都采取在当前状态下最好…...
Ubuntu22.04之mpv播放器高频快捷键(二百七十)
简介: CSDN博客专家、《Android系统多媒体进阶实战》一书作者 新书发布:《Android系统多媒体进阶实战》🚀 优质专栏: Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏: 多媒体系统工程师系列【…...
新闻推荐系统:Spring Boot的可扩展性
6系统测试 6.1概念和意义 测试的定义:程序测试是为了发现错误而执行程序的过程。测试(Testing)的任务与目的可以描述为: 目的:发现程序的错误; 任务:通过在计算机上执行程序,暴露程序中潜在的错误。 另一个…...
目录工具类 - C#小函数类推荐
此文记录的是目录工具类。 /***目录工具类Austin Liu 刘恒辉Project Manager and Software DesignerE-Mail: lzhdim163.comBlog: http://lzhdim.cnblogs.comDate: 2024-01-15 15:18:00***/namespace Lzhdim.LPF.Utility {using System.IO;/// <summary>/// The Objec…...
速盾:如何判断高防服务器的防御是否真实?
随着网络攻击日益增多和攻击手段的不断升级,保护网络安全变得越来越重要。高防服务器作为一种提供网络安全保护的解决方案,受到了越来越多的关注。然而,对于用户来说,如何判断高防服务器的防御是否真实,是否能够真正保…...
MySQL连接查询:联合查询
先看我的表结构 emp表 联合查询的关键字(union all, union) 联合查询 基本语法 select 字段列表 表A union all select 字段列表 表B 例子:将薪资低于5000的员工, 和 年龄大于50 岁的员工全部查询出来 第一种 select * fr…...
Gitea 数据迁移
一、从 Windows 迁移 Gitea 1. 备份 Gitea 数据 1.1 备份仓库文件 在 Windows 中,Gitea 仓库文件通常位于 C:\gitea\data\repositories。你可以使用压缩工具将该目录打包: 1.)右键点击 C:\gitea\data\repositories 目录,选择 “…...
MySQL 绪论
数据库相关概念 数据库(DB):存储数据的仓库数据库管理系统(DBMS):操纵和管理数据库的大型软件SQL:操纵关系型数据库的编程语言,定义了一套操作关系型数据库的统一标准主流的关系型数…...
什么是 HTTP Get + Preflight 请求
当在 Chrome 开发者工具的 Network 面板中看到 GET Preflight 的 HTTP 请求方法时,意味着该请求涉及跨域资源共享 (CORS),并且该请求被预检了。理解这种请求的背景,主要在于 CORS 的工作机制和现代浏览器对安全性的管理。 下面是在 Chrome …...
(JAVA)开始熟悉 “二叉树” 的数据结构
1. 二叉树入门 符号表的增删查改操作,随着元素个数N的增多,其耗时也是线性增多的。时间复杂度都是O(n),为了提高运算效率,下面将学习 树 这种数据结构 1.1 树的基本定义 树是我们计算机中非常重要的一种数据结构…...
【Linux】Linux命令与操作详解(一)文件管理(文件命令)、用户与用户组管理(创建、删除用户/组)
文章目录 一、前言1.1、Linux的文件结构是一颗从 根目录/ 开始的一个多叉树。1.2、绝对路径与相对路径1.3、命令的本质是可执行文件。1.4、家目录 二、文件管理2.1、文件操作1、pwd2、ls3、cd4、touch5、mkdir6、cp7、rm8、mv9、rmdir 2.2、查看文件1、cat2、more3、less4、hea…...
Hadoop大数据入门——Hive-SQL语法大全
Hive SQL 语法大全 基于语法描述说明 CREATE DATABASE [IF NOT EXISTS] db_name [LOCATION] path; SELECT expr, ... FROM tbl ORDER BY col_name [ASC | DESC] (A | B | C)如上语法,在语法描述中出现: [],表示可选,如上[LOCATI…...
个人开发主页
网站 GitHubCSDN知乎豆包Google百度 多媒体 ffmpeg媒矿工厂videolanAPPLE开发者官网华为开发者官网livevideostack高清产业联盟github-xhunmon/VABloggithub-0voice/audio_video_streamingdoom9streamingmediaFourCC-wiki17哥Depth.Love BlogOTTFFmpeg原理介绍wowzavicuesof…...
思维+数论,CF 922C - Cave Painting
目录 一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 二、解题报告 1、思路分析 2、复杂度 3、代码详解 一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 922C - Cave Painting 二、解题报告 1、思路分析 诈骗题 我们发现 n mo…...
如何下单PCB板和STM贴片服务- 嘉立创EDA
1 PCB 下单 1.1 PCB 设计好,需要进行DRC 检查。 1.2 生成gerber文件、坐标文件和BOM文件 1.3 打开嘉立创下单助手 上传gerber文件 1.4 选择下单数量 1.5 选择板材, 一般常用板材 PR4 板材。 1.6 如果需要阻抗匹配,需要选择设计的时候阻抗叠…...
MySQL连接查询:外连接
先看我的表结构 dept表 emp表 外连接分为 1.左外连接 2.右外连接 1.左外连接 基本语法 select 字段列表 FORM 表1 LEFT [OUTER] JOIN 表2 ON 条件;例子:查询emp表的所有数据,和对应部门的员工信息(左外连接) select e.*, d.n…...
108页PPT丨OGSM战略规划框架:实现企业目标的系统化方法论
OGSM战略规划框架是一种实现企业目标的系统化方法论,它通过将组织的目标(Objectives)、目标(Goals)、策略(Strategies)和衡量指标(Measures)进行系统化整合,确…...
电脑插入多块移动硬盘后经常出现卡顿和蓝屏
当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时,可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案: 1. 检查电源供电问题 问题原因:多块移动硬盘同时运行可能导致USB接口供电不足&#x…...
微信小程序 - 手机震动
一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注:文档 https://developers.weixin.qq…...
论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)
笔记整理:刘治强,浙江大学硕士生,研究方向为知识图谱表示学习,大语言模型 论文链接:http://arxiv.org/abs/2407.16127 发表会议:ISWC 2024 1. 动机 传统的知识图谱补全(KGC)模型通过…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序
一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...
Axios请求超时重发机制
Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式: 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...
浅谈不同二分算法的查找情况
二分算法原理比较简单,但是实际的算法模板却有很多,这一切都源于二分查找问题中的复杂情况和二分算法的边界处理,以下是博主对一些二分算法查找的情况分析。 需要说明的是,以下二分算法都是基于有序序列为升序有序的情况…...
Yolov8 目标检测蒸馏学习记录
yolov8系列模型蒸馏基本流程,代码下载:这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中,**知识蒸馏(Knowledge Distillation)**被广泛应用,作为提升模型…...
springboot整合VUE之在线教育管理系统简介
可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生,小白用户,想学习知识的 有点基础,想要通过项…...
基于IDIG-GAN的小样本电机轴承故障诊断
目录 🔍 核心问题 一、IDIG-GAN模型原理 1. 整体架构 2. 核心创新点 (1) 梯度归一化(Gradient Normalization) (2) 判别器梯度间隙正则化(Discriminator Gradient Gap Regularization) (3) 自注意力机制(Self-Attention) 3. 完整损失函数 二…...
Caliper 配置文件解析:fisco-bcos.json
config.yaml 文件 config.yaml 是 Caliper 的主配置文件,通常包含以下内容: test:name: fisco-bcos-test # 测试名称description: Performance test of FISCO-BCOS # 测试描述workers:type: local # 工作进程类型number: 5 # 工作进程数量monitor:type: - docker- pro…...
