机器学习算法(三):支持向量机(SVM)的sklearn调用

文章目录

  • 前言
  • 一 理论
    • 1 sklearn中的核函数形式
  • 二、sklearn调用
    • 1 svm.SVC() 接口说明
  • 三 、具体示例
    • 1、简单的线性SVM例子 --- 不同C值的影响
      • (1) 数据集
      • (2) svm sklearn调用
    • 2、高斯核函数的SVM --- 非线性分类
      • (1) 数据集
      • (2) 高斯核函数的SVM
    • 3、sklearn调参技术--网格搜索 --- 选择最优的C和gamma值、核函数等参数
  • 总结
  • 附录


前言

本节只会介绍SVM的一些sklearn的高级API调用接口,具体的理论推导这个模型的推导还是很复杂的,这里就不给出具体的理论了。具体理论还请读者自己想办法查阅资料吧。本来是有打算将理论也在这里附上,但很显然这个模型并不像线性回归和逻辑回归那样简单的几个公式就能够说明的,如果需要在这里讲述明白,需要大量的文字叙述,那么读者还不如去找一本详细介绍该模型的书看。

一 理论

【注】:该模型理论不是一句两句话可以阐述明白的,需要时哪出iPad上面笔记看一看 ---- 本注是写给作者本人看的。
但是sklearn中定义的核函数是什么样的还是需要在这里打一下公式才好在接口中选择参数
【注】:以后有时间了尽量会将理论也搬上来,支持向量机这个模型的确理解了理论和只会调用还是有一些区别的。

1 sklearn中的核函数形式

在这里插入图片描述
其中,linear:线性核函数;polynomial:多项式核函数;rbf:高斯核函数;主要是这三个了,具体的请参考官方文档,上面也简单介绍了点理论,不过很粗糙不容易看懂svm sklearn官方文档

二、sklearn调用

1 svm.SVC() 接口说明

sklearn.svm.SVCscikit-learn 中用于分类任务的支持向量分类器类。它提供了丰富的参数来控制 SVM 模型的行为和性能。

以下是 SVC 中的几个重要参数及其详细解释(仅列出较为重要的参数):
(1). C (float, default=1.0)

惩罚参数 ( C ),也称为正则化参数。它控制误分类的惩罚力度。较小的 ( C ) 会允许更多的误分类点,从而获得更平滑的决策边界(防止过拟合)。较大的 ( C ) 会对误分类点施加更大的惩罚,尝试准确地划分所有训练数据(可能导致过拟合)。

svm.SVC(C=1.0)

(2). kernel (str, default=‘rbf’)

指定用于模型的核函数。支持的核函数有:

  • 'linear':线性核函数
  • 'poly':多项式核函数
  • 'rbf':径向基函数核(默认)
  • 'sigmoid':S 型核函数
  • 自定义核函数:通过一个 callable 函数传递
svm.SVC(kernel='rbf')

(3). degree (int, default=3)

当使用多项式核函数时,指定多项式的阶数。这个参数在 kernel='poly' 时才有意义。

svm.SVC(kernel='poly', degree=3)

(4). gamma (str or float, default=‘scale’)

核函数系数,仅在 kernel='rbf', kernel='poly', 和 kernel='sigmoid' 时有效。它决定了单个训练样本的影响范围。

  • 'scale':默认值。使用 ( 1 / (n_{\text{features}} \times X.var()) )
  • 'auto':使用 ( 1 / n_{\text{features}} )
  • 也可以直接指定一个浮点数
svm.SVC(kernel='rbf', gamma='scale')

(5). coef0 (float, default=0.0)

核函数的独立项。在多项式和 S 型核函数中有用。它是多项式核中常数项(bias term)以及 S 型核中线性部分的常数项。

svm.SVC(kernel='poly', coef0=0.0)

(6). tol (float, default=1e-3)

停止准则的容忍度。用于控制算法的收敛精度,较小的 tol 值会使得优化过程更精确,但计算时间可能更长。

svm.SVC(tol=1e-3)

(7). decision_function_shape (str, default=‘ovr’)

决策函数的形状。对于多分类任务,支持两种模式:
- `'ovr'` (one-vs-rest):一对多,默认值。适合大多数情况。
- `'ovo'` (one-vs-one):一对一,用于处理多类别分类问题。```python
svm.SVC(decision_function_shape='ovr')
```

【注】:关于各类二分类器的一对一和一对多的策略实现多分类效果,后面会有一篇博客专门详细讲述究竟是什么个流程。

三 、具体示例

在本练习中,我们将使用支持向量机(SVM)来构建垃圾邮件分类器。 我们将从一些简单的2D数据集开始使用SVM来查看它们的工作原理。 然后,我们将对一组原始电子邮件进行一些预处理工作,并使用SVM在处理的电子邮件上构建分类器,以确定它们是否为垃圾邮件。
我们要做的第一件事是看一个简单的二维数据集,看看线性SVM如何对数据集进行不同的C值(类似于线性/逻辑回归中的正则化项)。
我们要做的第一件事是看一个简单的二维数据集,看看线性SVM如何对数据集进行不同的C值(类似于线性/逻辑回归中的正则化项)。

1、简单的线性SVM例子 — 不同C值的影响

C越大,对误分类的惩罚越大,决策边界越接近于正确分类的数据点,但是容易过拟合;C越小,对误分类的惩罚越小,决策边界越接近于所有数据的中心,容易欠拟合。

(1) 数据集

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sb
from scipy.io import loadmatraw_data = loadmat('data/ex6data1.mat')       #加载数据
raw_data                                      #查看数据,数据中X为特征,y为标签,可以看到数据放在一个字典中

输出:
在这里插入图片描述
在这里插入图片描述

【注】:数据读入进来是放在字典里面的。
我们将其用散点图表示,其中类标签由符号表示(+表示正类,o表示负类)。

data = pd.DataFrame(raw_data['X'], columns=['X1', 'X2'])
data['y'] = raw_data['y']positive = data[data['y']==1]
negative = data[data['y']==0]fig, ax = plt

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

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

相关文章

华为云x86架构下部署mysql

华为云x86架构下部署mysql 1. 配置X86架构ESC2. 查看本系统中有没有安装mariadb相关的组件,有则卸载3. 安装mysql4. 启动mysql5. 登录MySQL,修改密码,开放访问权限 1. 配置X86架构ESC 2. 查看本系统中有没有安装mariadb相关的组件&#xff0c…

从理论到实践:工业工厂室外可燃气体报警器的校准方法

随着工业工厂对安全生产要求的不断提高,可燃气体报警器作为防范火灾、爆炸事故的重要设备,其准确性和可靠性显得尤为重要。 特别是在室外环境中,由于气候条件多变、设备老化等因素的影响,可燃气体报警器的性能可能会发生变化。因…

使用 lock4j-redis-template-spring-boot-starter 实现redis分布式锁

使用 lock4j-redis-template-spring-boot-starter 实现redis分布式锁 1. 引入依赖2. 配置 Redis3. 使用分布式锁4. 自定义锁配置5. 处理锁获取失败的情况6. 高级用法7.样例 分布式锁是一种用于在分布式系统中实现并发控制的机制。在分布式系统中,由于多个节点同时访…

grpc学习golang版( 二、入门示例)

系列文章目录 第一章 grpc基本概念与安装 第二章 grpc入门示例 文章目录 一、环境二、编写protobuf文件三、编写server服务端四、编写服务端五、测试 一、环境 确保环境已经配置完成,效果如下。不同环境可能导致后续生成的效果不一。 go version protoc --version…

非对称加密介绍

非对称加密:现代网络安全的基石 在现代网络安全中,非对称加密是一种至关重要的技术。它在保护数据传输的机密性、完整性和真实性方面发挥着重要作用。本文将详细介绍什么是非对称加密、什么是公钥和私钥,以及它们在实际应用中的具体场景。 …

深度解析:ChatGPT是如何理解和生成自然语言文章的?

引言 随着人工智能的发展,ChatGPT作为一种先进的自然语言处理工具,正逐渐改变人们与技术交互的方式。那么,ChatGPT是如何理解和生成自然语言文章的?本文将从其技术原理、训练过程、实际应用等多个角度,深入解析这一过…

49、基于归一化感知器的输入向量分类(matlab)

1、基于归一化感知器的输入向量分类的原理及流程 归一化感知器是一种分类算法,其原理基于感知器算法,但是在输入向量上进行了归一化处理,以提高算法的性能和稳定性。 流程如下: 输入向量归一化:对每个输入向量进行归…

手机远程控制另一台手机的全新使用教程(安卓版)

看完这篇文章,你可以了解到安卓手机如何远程控制安卓手机,以及苹果手机如何远程控制安卓手机。 如果想要用安卓手机远程管控苹果手机,或者苹果手机远程管控另一台苹果手机,请点击查看视频《手机远程管控另一台手机的全新使用教程…

如何提高搜索点击率:五个利用ChatGPT创造吸引眼球标题的小技巧

在当今信息爆炸的时代,如何让自己的文章在海量信息中脱颖而出,是每个内容创作者都在思考的问题。尤其是当读者面对无数个搜索结果时,标题成为吸引他们点击的第一步。那么,如何才能写出吸引眼球的标题,从而提高搜索点击…

凯迪正大对电缆导体检测的重要性及其实施项目分享

电缆导体电缆的核心组成部分其性能直接影响到电缆的传输效率和使用寿命,所以对电缆导体进行定期检测确保其质量和性能对于保障电力设施的安全运行具有重要意义。今天就分享一下凯迪正大在电缆导体检测方面的心得总结,欢迎大家讨论并补充。 一、电缆导体…

论文学习_Towards Practical Binary Code Similarity Detection: Vulnerability

论文名称发表时间发表期刊期刊等级研究单位Towards Practical Binary Code Similarity Detection: Vulnerability 2023年ACM Transactions on Software Engineering and MethodologyCCF A信息工程研究所 1. 引言 重复性漏洞简介:开源库中的重复性漏洞,也称为 1-day 漏洞,由…

数字化工厂生产管理看板系统如何优化生产流程

在当今高度数字化的时代,制造业正经历着深刻的变革,数字化工厂生产管理看板系统作为一种创新的工具,正在为优化生产流程发挥着关键作用。 数字化工厂生产管理看板系统是一个集数据采集、分析、展示和决策支持于一体的综合性平台。生产管理看板…

SaaS行业的发展与前景

随着互联网技术的飞速发展,云计算逐渐成为新一代信息技术的重要方向。作为云计算的一种服务模式,SaaS(Software as a Service,软件即服务)已经深入到企业级应用和个人消费市场,成为全球软件产业的新趋势。在…

Linux上搭建邮件服务

欢迎来到我的博客,代码的世界里,每一行都是一个故事 🎏:你只管努力,剩下的交给时间 🏠 :小破站 Linux上搭建邮件服务 前言电子邮件的工作原理和基本组成部分1. 电子邮件的工作原理2. 电子邮件的…

【软件测试】概念篇

🎃🎃🎃个人主页🎃🎃🎃 🎃🎃🎃【软件测试专栏】🎃🎃🎃 🎃🎃🎃上一篇文章:认识测试&…

性能测试中关注的指标

性能测试中我们会关注很多的性能指标,会通过观测的性能指标来决定性能测试是否继续执行、性能测试是否通过等等内容,但是每次说到要监控什么指标的时候,往往就纠结在服务器的CPU利用率、可用内存数、磁盘IO、网络吞吐等,这些都是ISO25010定义的资源特性中给出的例子,其实对…

音乐创作与制作软件:Studio One 6.6.1中文版安装激活使用指南

音乐创作与制作软件:Studio One 6.6.1 简介 StudioOne 的设计核心是易于使用。十年来,它已将久经考验的录音棚模型与当今以节拍和循环为导向的制作过程无缝地结合在一起,因此您可以比以往更快地将音乐创意带入声音现实。高效的单屏幕界面可…

嵌入式Linux:开发平台搭建

目录 简介 1. JTAG工具的使用 2. 使用串口工具 3. 安装交叉编译工具 4.NFS文件的使用 简介 嵌入式开发平台的搭建,也即安装交叉编译工具链。 交叉编译是在一种平台上编译出能运行于另一种平台上的程序。 例如在X86平台上编译出能运行于ARM平台上的程序。 由于嵌入式设备…

04-Mysql 索引,事务

MySQL 索引介绍 索引是一个排序的列表,在这个列表中存储着索引的值和包含这个值的数据所在行的物理地址。在数据十分庞大的时候,索引可以大大加快查询的速度。这是因为使用索引后可以不用扫描全表来定位某行的数据,而是先通过索引表找到该行…

PointCloudLib-特征(Features)-基于转动惯量和偏心率的描述符

基于转动惯量和偏心率的描述符 在本教程中,我们将学习如何使用 pcl::MomentOfInertiaEstimation 类来获取基于 偏心率和转动惯量。此类还允许提取云的轴对齐和定向边界框。 但请记住,提取的 OBB 不是最小可能的边界框. 理论入门 特征提取方法的思路如下。 首先计算点云的…