机器学习算法(三):支持向量机(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…

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

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

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

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

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

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

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

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

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

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

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

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

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

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

SaaS行业的发展与前景

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

Linux上搭建邮件服务

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

【软件测试】概念篇

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

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

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

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

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

GNU、Unix、Linux、Makefile、GCC、GDB 之间的关系

1.1 Makefile Makefile 是一个用于自动化编译和构建过程的文本文件,尤其在软件开发项目中被广泛使用。它定义了一系列规则,说明了如何将源代码文件编译成可执行文件、库或者其他目标文件。Makefile 的核心作用在于它能够管理源代码文件之间的依赖关系&am…

Python多线程技巧心得详解

概要 多线程是一种能够并发执行代码的方法,可以提高程序的执行效率和响应速度。本文将详细介绍 Python 中多线程的概念、使用场景、基本用法以及实际应用,可以更好地掌握多线程编程。 什么是多线程? 多线程是一种在单个进程内并发执行多个线程的技术。每个线程共享相同的内…

笔记101:OSQP求解器的底层算法 -- ADMM算法

前言1:这篇博客仅限于介绍拉格朗日乘子法,KKT条件,ALM算法,ADMM算法等最优化方法的使用以及简版代码实现,但不会涉及具体的数学推导;不过在下面我会给出具体数学推导的相关文章和截图,供学有余力…

图书馆书籍管理系统

项目名称与项目简介 图书馆书籍管理系统 本项目是一个计算机管理系统,也就是将传统手工的管理方式转变为智能化、标准化、规范化的管理管理模式,对图书馆中所有的图书、文献资料、音像资料、报刊、期刊等各种类型的资料实现采编、收集图书信息、检索、归…

探讨数字化背景下VSM(价值流程图)的挑战和机遇

在信息化、数字化飞速发展的今天,各行各业都面临着前所未有的挑战与机遇。作为源自丰田生产模式的VSM(价值流程图),这一曾经引领制造业革命的工具,在数字化背景下又将如何乘风破浪,应对新的市场格局和技术变…

屏幕翻译下载哪个软件好?好用的屏幕翻译推荐

想象一下,当我们在阅读外文文档或是观看外语电影时,如果能有一款翻译工具同步提供译文,那将是多么令人愉悦的体验! 如果这种翻译服务能够在不影响其他应用的情况下进行,那就是double快乐了。 其实,现在要…

【ajax07基础】回调函数地狱

一:什么是回调函数地狱 在一个回调函数中嵌套另一个回调函数(甚至一直嵌套下去),形成回调函数地狱 回调函数地狱存在问题: 可读性差异常捕获严重耦合性严重 // 1. 获取默认第一个省份的名字axios({url: http://hmaj…