【机器学习】什么是支持向量机?

什么是支持向量机?

支持向量机(SVM,Support Vector Machine)是一种强大的机器学习算法,常用于分类问题,也可以用于回归问题。它的核心思想是通过找到一个最佳的“超平面”来将不同类别的数据分开,并使得不同类别之间的间隔最大化。

通俗易懂的理解:

想象你有一片二维的平面,上面有两种不同的点:一种用红色标记,另一种用蓝色标记。你需要画一条直线(或者高维空间中的超平面)来将这两类点分开,且使得这条直线距离两类点的最近点尽可能远。支持向量机就是通过这种方法找到最佳的分隔线(或超平面)。

举个例子:

假设我们有两类动物的体重和身高数据:

  • 红色:老虎
  • 蓝色:猫

我们用身高和体重来区分这两类动物。

身高(cm)体重(kg)动物类型
502
603
7010老虎
8012老虎

支持向量机的目标:

  1. 找到一条分割线(在二维空间中为直线,在高维空间中为超平面),使得它将两类点(猫和老虎)分开。
  2. 使得这条分割线距离每类点的“最近点”尽可能远(这个最近的点称为“支持向量”)。

核心概念:

  1. 支持向量:距离决策边界(分割线)最近的样本点,这些点决定了分割线的位置。
  2. 超平面:在高维空间中的“分割面”,在二维空间中就是一条直线。

SVM的决策边界:

支持向量机通过找到一个最大间隔的超平面来区分不同的类别,最大化的间隔就是“支持向量机”的优势之一,它使得模型对新数据的预测更加稳定。

代码示例:

我们可以使用 scikit-learn 库来实现一个简单的支持向量机分类器,来处理上面的猫和老虎的例子。

from sklearn import svm
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import rcParams# 设置字体为支持中文的字体
rcParams['font.family'] = 'SimHei'
rcParams['axes.unicode_minus'] = False# 数据:身高和体重
X = np.array([[50, 2], [60, 3], [70, 10], [80, 12]])
# 标签:猫=0,老虎=1
y = np.array([0, 0, 1, 1])# 创建SVM分类器
clf = svm.SVC(kernel='linear')# 训练SVM模型
clf.fit(X, y)# 创建一个网格用于画决策边界
xx, yy = np.meshgrid(np.linspace(40, 90, 100), np.linspace(0, 15, 100))
Z = clf.decision_function(np.c_[xx.ravel(), yy.ravel()])
Z = Z.reshape(xx.shape)# 绘制数据点
plt.scatter(X[:, 0], X[:, 1], c=y, cmap='autumn')# 绘制决策边界
plt.contour(xx, yy, Z, levels=[0], linewidths=2, colors='black')# 标题
plt.title("SVM分类:猫 vs 老虎")# 显示图形
plt.xlabel('身高 (cm)')
plt.ylabel('体重 (kg)')
plt.show()

解释:

  • X: 是我们输入的数据,表示每个动物的身高和体重。
  • y: 是标签,0表示猫,1表示老虎。
  • svm.SVC(kernel='linear'): 创建一个线性SVM分类器,kernel='linear’表示我们用的是线性核(即我们假设数据可以通过一条直线分开)。
  • clf.fit(X, y): 训练SVM模型。
  • clf.decision_function: 用来获取决策边界(分割线)的值。
  • plt.contour: 绘制决策边界。

输出图像:

图中会显示数据点,并且有一条黑色的线,表示支持向量机的决策边界,分割了猫和老虎的两类数据。
在这里插入图片描述
总结:

  • SVM 是一个通过找到最大间隔超平面来进行分类的算法。
  • 它的优点是对高维数据和非线性问题表现非常好,特别是使用核方法时(例如,使用 RBF核可以处理复杂的非线性数据)。
  • 通过支持向量机,模型会利用支持向量来构建最优的决策边界,保证分类的准确性。

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

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

相关文章

10分钟打造专属AI助手!ToDesk云电脑/顺网云/海马云操作DeepSeek哪家强?

文章目录 一、引言云计算平台概览ToDesk云电脑:随时随地用上高性能电脑 二 .云电脑初体验DeekSeek介绍版本参数与特点任务类型表现 1、ToDesk云电脑2、顺网云电脑3、海马云电脑 三、DeekSeek本地化实操和AIGC应用1. ToDesk云电脑2. 海马云电脑3、顺网云电脑 四、结语…

Spring Boot 一个接口实现任意表的 Excel 导入导出

Java的web开发需要excel的导入导出工具,所以需要一定的工具类实现,如果是使用easypoi、Hutool导入导出excel,会非常的损耗内存,因此可以尝试使用easyexcel解决大数据量的数据的导入导出,且可以通过Java8的函数式编程解…

QT原子变量:QAtomicInteger、QAtomicPointer、QAtomicFlag

引言:原子变量为何重要? 在多线程编程中,共享数据的原子性访问是保证线程安全的核心。传统互斥锁虽然有效,但会带来性能损耗和死锁风险。QT提供的原子类型(QAtomicInteger、QAtomicPointer、QAtomicFlag)通…

大模型金融企业场景落地应用

一、商业银行体系 1. 江苏银行 企业背景:江苏银行是总部位于江苏南京的全国性股份制商业银行,在城商行中资产规模位居前列,积极拥抱金融科技,将数字化转型作为核心战略之一。近年来,江苏银行持续加大在人工智能、大数…

卡特兰数在数据结构上面的运用

原理 Catalan数是一个数列,其第n项表示n个不同结点可以构成的二叉排序树的数量。Catalan数的第n项公式为:  其中,是组合数,表示从2n个元素中选择n个元素的组合数。 Catalan数的原理可以通过以下方式理解&…

影视后期工具学习之PR(中)

pr剪辑之旅----声音设计 第五课 镜头语言和绿幕抠像 超级键效果(超级键通过简单的吸管取色和参数调整,即可实现专业级抠像与合成效果。无论是绿幕替换背景,还是创意双重曝光,都能轻松驾驭。建议结合「Alpha 通道」视图观察透明区域,逐步优化细节,最终导出高质量视频。)…

使用BootStrap 3的原创的模态框组件,没法弹出!估计是原创的bug

最近在给客户开发一个CRM系统,其中用到了BOOTSTRAP的模态框。版本是3。由于是刚开始用该框架。所以在正式部署到项目中前,需要测试一下,找到框架中的如下部分。需要说明的是。我用的asp.net mvc框架开发。测试也是在asp.net mvc环境下。 复制…

Camera2 与 CameraX 闲谈

目录 📂 前言 1. 🔱 Camera2 2. 🔱 CameraX 3. 🔱 Camera2 与 CameraX 1)使用复杂度与开发效率 2)控制能力与应用场景 3)设备兼容性与稳定性 4)更新与维护 4. &#x1f4a0…

【大语言模型_8】vllm启动的模型通过fastapi封装增加api-key验证

背景: vllm推理框架启动模型不具备api-key验证。需借助fastapi可以实现该功能 代码实现: rom fastapi import FastAPI, Header, HTTPException, Request,Response import httpx import logging# 创建 FastAPI 应用 app FastAPI() logging.basicConfig(…

基于SpringBoot的名著阅读网站

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:…

Langchain 自定义工具和内置工具

使用介绍 自定义工具时的元素概念介绍 在Langchain中,工具(Tool)是与语言模型交互的基本单元。以下是自定义工具时的关键元素: name 定义:工具的名称,用于唯一标识该工具。作用:当工具被集成…

Gitee上库常用git命令

Gitee上库常用git命令 1、Fork 项目2、个人仓库修改3、追加提交4、创建PR5、多笔commit合一 1、Fork 项目 2、个人仓库修改 git add . // -s 表示自动添加邮箱签名信息,-m表示其后跟随commit描述 git commit -sm “add transition freeze” git push origin [目标…

Java 大视界 -- Java 大数据在智慧农业精准灌溉与施肥决策中的应用(144)

💖亲爱的朋友们,热烈欢迎来到 青云交的博客!能与诸位在此相逢,我倍感荣幸。在这飞速更迭的时代,我们都渴望一方心灵净土,而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识,也…

Redux,React-redux。基础

状态管理库,集中式存储状态,管理状态 ✅ redux //简单实现 redux源码 export function createStore(reducer) {// reducer由用户编写, 必须是一个函数,dispatch的时候,reducer要执行if (typeof reducer ! function) t…

5.2 位运算专题:LeetCode 268. 丢失的数字

1. 题目链接 LeetCode 268. 丢失的数字 2. 题目描述 给定一个包含 [0, n] 范围内 n 个不同整数的数组 nums(实际长度为 n),找出数组中缺失的那个数字。 示例: 输入:nums [3,0,1] → 输出:2(…

基于第三方库的人脸识别系统的设计与实现

标题:基于第三方库的人脸识别系统的设计与实现 内容:1.摘要 本文针对传统人脸识别系统开发复杂、效率低的问题,旨在设计并实现基于第三方库的人脸识别系统。通过选用合适的第三方人脸识别库,利用其成熟的算法和接口,简化系统开发流程。对收集…

【Android】VehiclePropertyAccess引起CarService崩溃

VehiclePropertyAccess引起CarService崩溃 VehiclePropertyAccess VehiclePropertyAccess属性,用于定义车辆属性的访问权限。权限包括 读:READ,只可以读取,不能写入。 VehiclePropertyAccess:READ写:WRITE&#xf…

【Go】Go语言并发模型:MPG

Go 语言并发模型:MPG Go 的并发模型主要由三个部分构成: M (Machine) 系统线程,用于实际执行任务。 P (Processor) 逻辑处理器,负责管理和调度 goroutine。每个 P 拥有一个本地队列和关联的全局 G 队列。 G (Goroutine) Go 语言…

SpringCloud配置中心:Config Server与配置刷新机制

文章目录 引言一、Config Server基础架构1.1 Server端配置1.2 配置文件命名规则 二、Config Client配置2.1 Client端配置2.2 配置注入与使用 三、配置刷新机制3.1 手动刷新配置3.2 使用Spring Cloud Bus实现自动刷新3.3 配置仓库Webhook自动触发刷新 四、高级配置管理策略4.1 配…

PyTorch生成式人工智能实战:从零打造创意引擎

PyTorch生成式人工智能实战:从零打造创意引擎 0. 前言1. 生成式人工智能1.1 生成式人工智能简介1.2 生成式人工智能技术 2. Python 与 PyTorch2.1 Python 编程语言2.2 PyTorch 深度学习库 3. 生成对抗网络3.1 生成对抗网络概述3.2 生成对抗网络应用 4. Transformer4…