针对SVM算法初步研究
归纳编程学习的感悟,
记录奋斗路上的点滴,
希望能帮到一样刻苦的你!
如有不足欢迎指正!
共同学习交流!
🌎欢迎各位→点赞 👍+ 收藏⭐ + 留言📝
心态决定高度,细节决定成败!
初识SVM算法:
支持向量机(Support Vector Machine, SVM)是一种监督学习算法,主要用于分类和回归分析。SVM的基本模型是定义在特征空间上的间隔最大的线性分类器,其决策边界是对学习样本求解的最大边距超平面(maximum-margin hyperplane)。在分类任务中,SVM试图找到一个超平面来区分不同类别的数据,这个超平面不仅需要正确地分类训练数据,而且还要确保两类数据到这个超平面的距离最大化,这样可以使得模型具备更好的泛化能力。
SVM能够执行线性或非线性分类、回归,甚至是异常值检测任务。它是机器学习领域最受欢迎的模型之一。SVM特别适用于中小型复杂数据集的分类。

超平⾯最⼤间隔
下面左图显示了三种可能的线性分类器的决策边界,虚线代表的模型表现⾮常糟糕,甚⾄都⽆法正确实现分类。
其余两个模型(红线和紫线)在训练集上表现比较完美,但是它们的决策边界与实例过于接近,导致在⾯对新实例时,表现可能不会太好。
而下面右图中的实线代表不仅分离了两个类别,且尽可能远离最近的训练实例

硬间隔和软间隔:
硬间隔分类:
在上面我们使用超平面进行分割数据的过程中,如果我们严格地让所有实例都不在最大间隔之间,并且位于正确的一边,这就是硬间隔分类。
硬间隔分类有两个问题,首先,它只在数据是线性可分离的时候才有效;其次,它对异常值非常敏感。
软间隔分类:
要避免这些问题,最好使用更灵活的模型。目标是尽可能在保持最大间隔宽阔和限制间隔违例(即位于最大间隔之上,甚至在错误的一边的实例)之间找到良好的平衡,这就是软间隔分类。
下面我们来用python写一个简单的SVM模型:
使用Python实现一个简单的SVM算法,可以使用scikit-learn库,这是一个非常流行的机器学习库,它提供了SVM的支持。
首先,需要安装scikit-learn,可以通过pip来安装:
pip install scikit-learn
# 导入必要的库
from sklearn import svm # SVM分类器
from sklearn.datasets import make_blobs # 生成模拟数据
import numpy as np # 数值计算库# 生成一些随机数据点,分成两组
X, y = make_blobs(n_samples=50, centers=2, random_state=0, cluster_std=0.60)# 创建一个线性核函数的SVM分类器
# kernel='linear' 指定使用线性核函数
# C=1.0 是惩罚参数C的倒数,表示对误分类的容忍度
clf = svm.SVC(kernel='linear', C=1.0)# 使用生成的数据训练SVM模型
# fit方法接受特征矩阵X和目标向量y
clf.fit(X, y)# 生成两个新的数据点,准备用于预测
new_data = np.array([[0, 0], [1, 1]])# 使用训练好的模型对新数据点进行预测
predictions = clf.predict(new_data)# 打印预测结果
print("Predictions:", predictions)
代码解释:
-
导入必要的库:
sklearn:Scikit-Learn库,提供了各种机器学习算法。numpy:用于数值运算的库。
-
生成数据:
make_blobs函数用于生成一组模拟的聚类数据点。n_samples参数指定要生成的数据点数量。centers参数指定中心点的数量,本例中为2,意味着生成的数据将大致分为两组。random_state用于设置随机种子,保证每次运行生成相同的数据。cluster_std参数指定了簇的标准差,用来控制生成数据的分散程度。
-
创建SVM分类器:
svm.SVC()创建一个支持向量分类器对象。kernel='linear'参数指定使用线性核函数,即寻找一个线性决策边界。C=1.0参数控制了对误分类的惩罚程度,较大的C值意味着模型对误分类的容忍度更低。 -
训练模型:
fit(X, y)方法用于训练模型,其中X是特征矩阵,y是目标向量。 -
预测新数据:
predict(new_data)方法用于对新的数据点进行分类预测。 -
输出结果:
最后,打印出对新数据点的预测结果。
这个示例展示了如何使用scikit-learn的SVC类创建并训练一个简单的线性SVM分类器,并使用该分类器对新的数据点进行预测。这种类型的SVM非常适合处理线性可分的问题。
相关文章:
针对SVM算法初步研究
归纳编程学习的感悟, 记录奋斗路上的点滴, 希望能帮到一样刻苦的你! 如有不足欢迎指正! 共同学习交流! 🌎欢迎各位→点赞 👍 收藏⭐ 留言📝心态决定高度,细节决定成败…...
Java中的`String`不可变性详解
在Java中,String类具有不可变性(immutable),这意味着一旦String对象被创建,它的值将无法更改。所有对字符串的修改操作(如拼接、替换等)实际上都会生成一个新的字符串对象,而不会修改…...
c# SMTP发送邮件
string from ""; string fromAlias "MIS-TC"; string[] to { "" }; string subject "问题提交"; string body sb.ToString(); string ipaddr "smtp.email.qq.com"; int port 25; string credit ""; strin…...
GPU基础 -- 并行化与阿姆达尔定律
并行化与阿姆达尔定律 并行化是将计算任务分割成多个部分,使这些部分能够在多个处理器或核心上同时运行,从而加速任务的完成时间。阿姆达尔定律(Amdahl’s Law)则揭示了并行化所能带来的加速效果的限制。 阿姆达尔定律公式 阿姆…...
Lua热更
Lua 热更 前提 Lua是轻量级,可以解释执行的编程语言、性能好 基本原则 1.场景空 代码控制物体加载释放 2.场景一个 3.节点不手动挂代码 4.AssetsBundle资源管理 5.Lua开发框架 6.调试模式、发布模式 XLua 热更框架 XLua是C#环境下Lua的解决方案 1.Lua虚拟…...
提升汽车行业软件质量:ASPICE培训的关键实践方法
ASPICE(汽车行业软件过程改进和能力确定)培训是一种针对汽车行业软件开发和维护过程的标准化培训。 该培训旨在帮助组织提高其软件开发和维护过程的质量和效率。以下是ASPICE培训的一些最佳实践方法: 1. 理解ASPICE框架:首先&…...
2024 全新智能识别 API 接口震撼登场
近年来,随着人工智能技术的快速发展,智能识别技术逐渐成为了各个领域的热门应用。在这个大背景下,2024 年的全新智能识别 API 接口横空出世,为我们的生活带来了更多的便利。本文将为大家详细介绍这个全新智能识别 API 接口&#x…...
《UniVS: Unified and Universal Video Segmentation with Prompts as Queries》要点提炼
论文来源:https://arxiv.org/abs/2402.18115 《UniVS: Unified and Universal Video Segmentation with Prompts as Queries》是2024CVPR中的一篇关于视频分割的论文, 主要内容: 论文提出了一个名为UniVS的新型统一视频分割架构,…...
计算机毕业设计选题推荐-推拿知识互动平台-Java/Python项目实战
✨作者主页:IT毕设梦工厂✨ 个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Py…...
基于SpringBoot+Vue+MySQL的瑜伽馆管理系统
系统展示 用户前台界面 管理员后台界面 系统背景 本系统采用SpringBoot作为后端框架,Vue.js构建前端用户界面,MySQL作为数据库存储系统,实现了瑜伽馆的全面数字化管理。系统涵盖会员管理、课程预约、教练排班、收入统计等功能模块,…...
【MySQL】EXPLAIN(执行计划)关键字是什么?
简介: explain是一个强大的 SQL 命令,用于分析和优化查询性能。通过查看数据库执行计划,我们可以理解查询是如何被处理的,包括表的访问顺序、使用的索引、连接类型等。这对于找到潜在的性能瓶颈非常重要。 目录 一、基本含义 二…...
Mybatis两种方式来调用sql语句
使用Mybatis时,有两种方式来调用sql语句: 方式一(直接通过Session对象调用sql语句): SqlSession sqlSession sqlSessionFactory.openSession(); User user sqlSession.selectOne("userTest.selectUser"…...
第十八节:学习统一异常处理(自学Spring boot 3.x的第五天)
这节记录下如何通过AOP方式统一处理异常拦截。 第一步: 新建一个exception包,创建一个ExcetionHandler.java(名字随意取) package cn.wcyf.wcai.exception;import cn.wcyf.wcai.common.Result; import org.springframework.web…...
flink中slotSharingGroup() 的详解
在 Apache Flink 中,slotSharingGroup() 是一个用于控制算子(operator)之间资源共享的机制。它允许多个算子共享相同的 slot(即资源容器)。Slot 是 Flink 中的资源单位,slot 共享可以提高资源利用率&#x…...
ASPF 技术介绍
...
77-java 装饰器模式和适配器模式区别
Java中的装饰器模式和适配器模式虽然都涉及到对象的组合和包装,但它们的应用场景和目的有所不同。 装饰器模式的目的是在不修改原始对象的基础上,动态地添加功能或行为。它允许用户通过创建一个包含原始对象的包装类(装饰器ÿ…...
5. Fabric 设置画布大小
1. 设置宽度 canvas.setWidth(width)2. 设置高度 canvas.setHeight(height)3. 设置大小 canvas.setDimensions({width,height })4. 画布的缩放 canvas.on(mouse:wheel, (opt) > {const delta opt.e.deltaY // 滚轮,向上滚一下是 -100,向下滚一下…...
240912-通过Ollama实现网站知识总结
A. 最终效果 B. 准备工作 报错: USER_AGENT environment variable not set, consider setting it to identify your requests.-CSDN博客 C. 完整代码 # https://coreyclip.github.io/Ollama-Web-Summaries/import os os.environ[USER_AGENT] Mozilla/5.0 (Windows NT 10.…...
Debian 包管理工具apt使用
apt基本用法 apt(Advanced Package Tool)是Debian及其衍生发行版(如Ubuntu、Linux Mint等)中非常强大的软件包管理系统。它允许用户从远程仓库安装、更新、升级、配置和卸载软件包。除了我们已经讨论过的卸载软件包的功能外&…...
如何模拟一个小程序项目打包的流程
一、Uni-app 执行 yarn run dev:mp-weixin后会发生什么 (一)准备工作 克隆项目:创建以 typescript 开发的工程(如命令行创建失败,请直接访问 https://gitee.com/dcloud/uni-preset-vue/repository/archive/vite-ts.z…...
关于nvm与node.js
1 安装nvm 安装过程中手动修改 nvm的安装路径, 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解,但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后,通常在该文件中会出现以下配置&…...
自然语言处理——循环神经网络
自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元(GRU)长短期记忆神经网络(LSTM)…...
Redis数据倾斜问题解决
Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中,部分节点存储的数据量或访问量远高于其他节点,导致这些节点负载过高,影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...
AI+无人机如何守护濒危物种?YOLOv8实现95%精准识别
【导读】 野生动物监测在理解和保护生态系统中发挥着至关重要的作用。然而,传统的野生动物观察方法往往耗时耗力、成本高昂且范围有限。无人机的出现为野生动物监测提供了有前景的替代方案,能够实现大范围覆盖并远程采集数据。尽管具备这些优势…...
【JVM】Java虚拟机(二)——垃圾回收
目录 一、如何判断对象可以回收 (一)引用计数法 (二)可达性分析算法 二、垃圾回收算法 (一)标记清除 (二)标记整理 (三)复制 (四ÿ…...
在鸿蒙HarmonyOS 5中使用DevEco Studio实现企业微信功能
1. 开发环境准备 安装DevEco Studio 3.1: 从华为开发者官网下载最新版DevEco Studio安装HarmonyOS 5.0 SDK 项目配置: // module.json5 {"module": {"requestPermissions": [{"name": "ohos.permis…...
第7篇:中间件全链路监控与 SQL 性能分析实践
7.1 章节导读 在构建数据库中间件的过程中,可观测性 和 性能分析 是保障系统稳定性与可维护性的核心能力。 特别是在复杂分布式场景中,必须做到: 🔍 追踪每一条 SQL 的生命周期(从入口到数据库执行)&#…...
TSN交换机正在重构工业网络,PROFINET和EtherCAT会被取代吗?
在工业自动化持续演进的今天,通信网络的角色正变得愈发关键。 2025年6月6日,为期三天的华南国际工业博览会在深圳国际会展中心(宝安)圆满落幕。作为国内工业通信领域的技术型企业,光路科技(Fiberroad&…...
LCTF液晶可调谐滤波器在多光谱相机捕捉无人机目标检测中的作用
中达瑞和自2005年成立以来,一直在光谱成像领域深度钻研和发展,始终致力于研发高性能、高可靠性的光谱成像相机,为科研院校提供更优的产品和服务。在《低空背景下无人机目标的光谱特征研究及目标检测应用》这篇论文中提到中达瑞和 LCTF 作为多…...
Vue3中的computer和watch
computed的写法 在页面中 <div>{{ calcNumber }}</div>script中 写法1 常用 import { computed, ref } from vue; let price ref(100);const priceAdd () > { //函数方法 price 1price.value ; }//计算属性 let calcNumber computed(() > {return ${p…...

