如何选择SVM中最佳的【核函数】
参数“kernel"在sklearn中可选以下几种 选项:

接下来我们 就通过一个例子,来探索一下不同数据集上核函数的表现。我们现在有一系列线性或非线性可分的数据,我们希望通过绘制SVC在不同核函数下的决策边界并计算SVC在不同核函数下分类准确率来观察核函数的效果。
我们先来导入相应的模块:
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.colors import ListedColormap
from sklearn import svm#from sklearn.svm import SVC 两者都可以
from sklearn.datasets import make_circles, make_moons, make_blobs,make_classification # 生成数据集,make_classification生成分类数据集,make_blobs生成聚类数据集,make_moons生成半月形数据集,make_circles生成环形数据集,make_moons生成月牙形数据集
导入模块后,我们先来用以下代码绘制四种不同类型的分类图:
n_samples = 100datasets = [make_moons(n_samples=n_samples, noise=0.2, random_state=0),make_circles(n_samples=n_samples, noise=0.2, factor=0.5, random_state=1),make_blobs(n_samples=n_samples, centers=2, random_state=5),#分簇的数据集make_classification(n_samples=n_samples,n_features = 2,n_informative=2,n_redundant=0, random_state=5)#n_features:特征数,n_informative:带信息的特征数,n_redundant:不带信息的特征数]Kernel = ["linear","poly","rbf","sigmoid"]#四个数据集分别是什么样子呢?
for X,Y in datasets:plt.figure(figsize=(5,4))plt.scatter(X[:,0],X[:,1],c=Y,s=50,cmap="rainbow")




我们总共有四个数据集,四种核函数,我们希望观察每种数据集下每个核函数的表现。以核函数为列,以图像分布 为行,我们总共需要16个子图来展示分类结果。而同时,我们还希望观察图像本身的状况,所以我们总共需要20 个子图,其中第一列是原始图像分布,后面四列分别是这种分布下不同核函数的表现。
nrows=len(datasets)
ncols=len(Kernel) + 1
fig, axes = plt.subplots(nrows, ncols,figsize=(20,16))

子图画好后,我们通过循环语句观察在不同的核函数不同的分类情况:
#第一层循环:在不同的数据集中循环
for ds_cnt, (X,Y) in enumerate(datasets):#在图像中的第一列,放置原数据的分布ax = axes[ds_cnt, 0]if ds_cnt == 0:ax.set_title("Input data")ax.scatter(X[:, 0], X[:, 1], c=Y, zorder=10, cmap=plt.cm.Paired,edgecolors='k')ax.set_xticks(())ax.set_yticks(())#第二层循环:在不同的核函数中循环#从图像的第二列开始,一个个填充分类结果for est_idx, kernel in enumerate(Kernel):#定义子图位置ax = axes[ds_cnt, est_idx + 1]#建模clf = svm.SVC(kernel=kernel, gamma=2).fit(X, Y)score = clf.score(X, Y)#绘制图像本身分布的散点图ax.scatter(X[:, 0], X[:, 1], c=Y,zorder=10,cmap=plt.cm.Paired,edgecolors='k')#绘制支持向量ax.scatter(clf.support_vectors_[:, 0], clf.support_vectors_[:, 1], s=50,facecolors='none', zorder=10, edgecolors='k')# facecolors='none':透明的#绘制决策边界x_min, x_max = X[:, 0].min() - .5, X[:, 0].max() + .5y_min, y_max = X[:, 1].min() - .5, X[:, 1].max() + .5#np.mgrid,合并了我们之前使用的np.linspace和np.meshgrid的用法#一次性使用最大值和最小值来生成网格#表示为[起始值:结束值:步长]#如果步长是复数,则其整数部分就是起始值和结束值之间创建的点的数量,并且结束值被包含在内XX, YY = np.mgrid[x_min:x_max:200j, y_min:y_max:200j]#np.c_,类似于np.vstack的功能Z = clf.decision_function(np.c_[XX.ravel(), YY.ravel()]).reshape(XX.shape)#填充等高线不同区域的颜色ax.pcolormesh(XX, YY, Z > 0, cmap=plt.cm.Paired)#绘制等高线ax.contour(XX, YY, Z, colors=['k', 'k', 'k'], linestyles=['--', '-', '--'],levels=[-1, 0, 1])#设定坐标轴为不显示ax.set_xticks(())ax.set_yticks(())#将标题放在第一行的顶上if ds_cnt == 0:ax.set_title(kernel)#为每张图添加分类的分数 ax.text(0.95, 0.06, ('%.2f' % score).lstrip('0'), size=15, bbox=dict(boxstyle='round', alpha=0.8, facecolor='white')#为分数添加一个白色的格子作为底色, transform=ax.transAxes #确定文字所对应的坐标轴,就是ax子图的坐标轴本身, horizontalalignment='right' #位于坐标轴的什么方向)plt.tight_layout()
plt.show()

由图可知,我们可以观察到,线性核函数和多项式核函数在非线性数据上表现会浮动,如果数据相对线性可分,则表现不错,如果是像环形数据那样彻底不可分的,则表现糟糕。在线性数据集上,线性核函数和多项式核函数即便有扰动项也可以表现不错,可见多项式核函数是虽然也可以处理非线性情况,但更偏向于线性的功能。 Sigmoid核函数就比较尴尬,它在非线性数据上强于两个线性核函数,但效果明显不如rbf,它在线性数据上完全 比不上线性的核函数们,对扰动项的抵抗也比较弱,所以它功能比较弱小,很少被用到。
相关文章:
如何选择SVM中最佳的【核函数】
参数“kernel"在sklearn中可选以下几种 选项: 接下来我们 就通过一个例子,来探索一下不同数据集上核函数的表现。我们现在有一系列线性或非线性可分的数据,我们希望通过绘制SVC在不同核函数下的决策边界并计算SVC在不同核函数下分类准确…...
RT-Thread的构建与配置系统
Kconfig:kernel config配置文件(提供系统的配置裁剪功能)Scons:构建工具env工具:主要提供构建系统所需的各种环境变量以及软件包的管理 Env Env是RT-Thread推出的开发辅助工具,针对基于RT-Thread操作系统…...
合肥中科深谷嵌入式项目实战——基于ARM语音识别的智能家居系统(一)
基于ARM语音识别的智能家居系统 我们接下来带大家完成基于语音识别的智能家居系统嵌入式项目实战,使用到stm32开发板,讯飞的离线语音识别,我们在此之前,我们先学习一些Linux系统的基本操作。 。 一、Linux简介 在嵌入式开发中&am…...
Git的简介以及基本使用
目录 一.Git的简介 拓展:Git与SVN的区别(各自的优点与缺点) 二.Git文件的4种状态 三.Git的常用命令 搭建完成之后,将项目文件也上传之后,现在模拟其他人来下载这个代码 今天就分享到这啦!!…...
django安装数据库
使用pip安装django pip3 install django注意我使用的是python3所以用pip3安装,如需安装指定版本 django ..* 检测是否安装成功,不报错,则安装成功 # python3 # import django下边这是报错的 django迁移数据库 再mysql中简历数据库 CREATE DATABA…...
springboot--外部环境配置
外部环境配置 前言1、配置优先级配置文件优先级如下(后面的覆盖前面的)测试 2、外部配置3、导入配置4、属性占位符 前言 场景:线上应用如何快速修改配置,并引用最新配置? springBoot 使用配置优先级外部配置 简化配置…...
『MySQL快速上手』-④-表的操作
文章目录 1.创建表2.查看表结构3.修改表4.删除表 1.创建表 语法格式如下: CREATE TABLE table_name ( field1 datatype, field2 datatype, field3 datatype ) character set 字符集 collate 校验规则 engine 存储引擎;说明: field 表示列名࿱…...
2023年10月Web3行业月度发展报告区块链篇 |陀螺研究院
10月是加密动荡的一月,围绕比特币现货ETF市场激荡不断,先有Cointelegraph“假消息”搅动市场以致合约遭血洗1.89亿美元,后有灰度、DCTT接二连三释放利好,市场情绪迅速激化,流动性显著提升,USDT 总市值突破8…...
【TES745D】青翼自研基于复旦微的FMQL45T900全国产化ARM核心模块(100%国产化)
板卡概述 TES745D是一款基于上海复旦微电子FMQL45T900的全国产化ARM核心板。该核心板将复旦微的FMQL45T900(与XILINX的XC7Z045-2FFG900I兼容)的最小系统集成在了一个87*117mm的核心板上,可以作为一个核心模块,进行功能性扩展&…...
初次给外贸客户发邮件范文
以下是一米软件给大家整理的一份初次给外贸客户发邮件的示例范文。请根据您的具体情况和需求进行个性化调整。 cssCopy code 主题:初次问候与合作机会 尊敬的[客户的名字], 我希望这封邮件能找到您并使您一切安好。我是[您的名字],代表[您的公司名]。我…...
C语言中的多种形式的循环结构
C语言提供了多种循环结构,包括for循环、while循环、do-while循环和foreach循环等。 //for循环 for (int i 0; i < 10; i) { printf("%d\n", i); } //while循环 int i 0; while (i < 10) { printf("%d\n", i); i; } //do-wh…...
7天入门python系列之第二天python 基础语法
第2天主要是学习Python的基础知识 编者打算开一个python 初学主题的系列文章,用于指导想要学习python的同学。关于文章有任何疑问都可以私信作者。对于初学者想在7天内入门Python,这是一个紧凑的学习计划。但并不是不可完成的。第二天开始python 基础知…...
【星海出品】flask 与docker
import os from flask import Flask, request from flask import Response, make_response, jsonify import cv2 import base64 import io import uuid from main import eye app Flask(__name__) app.route(/, methods[GET, POST]) # 添加路由blend def upload_file():…...
Oracle的to_date()函数解决sql语句日期格式问题
项目场景: 提示:oracle中sql语句日期格式: 如:to_date(‘2023-01-01 13:14:20’,‘yyyy-MM-dd HH:mm:ss’) //错误写法 问题描述 改变一:24小时制 to_date(‘2005-01-01 13:14:20’,‘yyyy-MM-dd HH24:mm:ss’) //错…...
Vue实现面经基础版案例(路由+组件缓存)
一、面经基础版-案例效果分析 1.面经效果演示 2.功能分析 通过演示效果发现,主要的功能页面有两个,一个是列表页,一个是详情页,并且在列表页点击时可以跳转到详情页底部导航可以来回切换,并且切换时,只有…...
uniapp打开外部链接方式
uniapp打开外部链接方式 1、H5,打开方式 window.location.href url 2、APP,打开方式 plus.runtime.openURL(url)...
SecureCRT安装、注册教程
SecureCRT保姆级安装教程!!! 安装包与注册机自取。 链接:https://pan.baidu.com/s/1IrFkHlrtCoc67QnQ_z1TWQ?pwdt25m 提取码:t25m 一 前期准备 1.1 关闭病毒查杀(如果有其他杀毒软件也要关闭࿰…...
音乐免费下载mp3格式+音频格式转换+剪辑音频+合并音频教程
1.在qq音乐网页版搜索想要的歌曲 qq音乐网站:https://y.qq.com/ 如果你是vip可以直接下载vip的歌曲,如果不是选择不是vip的歌曲进行第一步的操作 2.点击播放进入页面后F12拿到音频地址 然后双击src里面的音频地址复制 网页新标签打开赋值的这个链接&a…...
腾讯云16核服务器配置有哪些?CPU型号处理器主频性能
腾讯云16核服务器配置大全,CVM云服务器可选择标准型S6、标准型SA3、计算型C6或标准型S5等,目前标准型S5云服务器有优惠活动,性价比高,计算型C6云服务器16核性能更高,轻量16核32G28M带宽优惠价3468元15个月,…...
什么是屏蔽机房?
屏蔽机房是一种用于保护数据中心设备的安全和可靠的措施。通过屏蔽机房,可以防止电磁干扰、防止物理入侵以及提供更好的隔离和安全性。下面是一些关于屏蔽机房的常见做法: 电磁屏蔽:为了防止电磁干扰对数据中心设备的影响,可以在屏…...
大话软工笔记—需求分析概述
需求分析,就是要对需求调研收集到的资料信息逐个地进行拆分、研究,从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要,后续设计的依据主要来自于需求分析的成果,包括: 项目的目的…...
【JavaSE】绘图与事件入门学习笔记
-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角,以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向,距离坐标原点x个像素;第二个是y坐标,表示当前位置为垂直方向,距离坐标原点y个像素。 坐标体系-像素 …...
OpenLayers 分屏对比(地图联动)
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能,和卷帘图层不一样的是,分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...
C++八股 —— 单例模式
文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全(Thread Safety) 线程安全是指在多线程环境下,某个函数、类或代码片段能够被多个线程同时调用时,仍能保证数据的一致性和逻辑的正确性…...
3-11单元格区域边界定位(End属性)学习笔记
返回一个Range 对象,只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意:它移动的位置必须是相连的有内容的单元格…...
SAP学习笔记 - 开发26 - 前端Fiori开发 OData V2 和 V4 的差异 (Deepseek整理)
上一章用到了V2 的概念,其实 Fiori当中还有 V4,咱们这一章来总结一下 V2 和 V4。 SAP学习笔记 - 开发25 - 前端Fiori开发 Remote OData Service(使用远端Odata服务),代理中间件(ui5-middleware-simpleproxy)-CSDN博客…...
保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek
文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama(有网络的电脑)2.2.3 安装Ollama(无网络的电脑)2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...
计算机基础知识解析:从应用到架构的全面拆解
目录 前言 1、 计算机的应用领域:无处不在的数字助手 2、 计算机的进化史:从算盘到量子计算 3、计算机的分类:不止 “台式机和笔记本” 4、计算机的组件:硬件与软件的协同 4.1 硬件:五大核心部件 4.2 软件&#…...
Vite中定义@软链接
在webpack中可以直接通过符号表示src路径,但是vite中默认不可以。 如何实现: vite中提供了resolve.alias:通过别名在指向一个具体的路径 在vite.config.js中 import { join } from pathexport default defineConfig({plugins: [vue()],//…...
Elastic 获得 AWS 教育 ISV 合作伙伴资质,进一步增强教育解决方案产品组合
作者:来自 Elastic Udayasimha Theepireddy (Uday), Brian Bergholm, Marianna Jonsdottir 通过搜索 AI 和云创新推动教育领域的数字化转型。 我们非常高兴地宣布,Elastic 已获得 AWS 教育 ISV 合作伙伴资质。这一重要认证表明,Elastic 作为 …...
