如何选择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,它在线性数据上完全 比不上线性的核函数们,对扰动项的抵抗也比较弱,所以它功能比较弱小,很少被用到。

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

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

相关文章

Django初窥门径-项目初始化

环境准备 切换pypi源 运行下面的脚本将pypi源切换为阿里云镜像,避免安装python库的过程中出现网络问题 #!/bin/bash# 定义配置内容 config_content"[global] index-url http://mirrors.aliyun.com/pypi/simple/[install] trusted-hostmirrors.aliyun.com &…

su root失败 sudo su成功进入root

目录 0.场景 1.su root输入密码kali失败 2.对kali用户暂时提权 3.问题原因 0.场景 刚刚安装好kali,想使用su root切换进入root账户 1.su root输入密码kali失败 2.对kali用户暂时提权 只要你的用户在sudoers里面,就可以输入当前用户密码暂时变成root…

Android Studio(项目收获)

取消按钮默认背景色 像按钮默认背景色为深蓝色&#xff0c;即使使用了background属性指定颜色也不能生效。 参考如下的解决方法&#xff1a; 修改/res/values/themes.xml中的指定内容如下&#xff1a; <style name"Theme.TianziBarbecue" parent"Theme.Mater…

容联七陌携手岚时科技,解决医美机构回访3大痛点

近日&#xff0c;岚时科技研发中心联合容联七陌发布了全新的智能呼叫中心系统&#xff0c;5大功能模块解决了医美机构回访过程中的3大难题&#xff1a;客户资产保全困难、客户回访技术被卡脖子、回访人员&#xff08;客服、咨询&#xff09;效率管理困难。 “智能呼叫中心”通过…

K8S知识点(三)

&#xff08;1&#xff09;环境搭建-环境初始化 Centos的版本是有要求的必须是7.5或以上&#xff0c;否则安装出来的集群是有问题的Node节点可能加入不到集群中来 详细步骤 1.同时连接三台服务器&#xff1a;查看一下版本 是否正确 2.主机名解析&#xff0c;方便节点之间的…

王道p18 第11题 现在有两个等长升序序列 A和 B,试设计一个在时间和空间两方面都尽可能高效的算法,找出两个序列 A和B的中位数。

视频讲解&#x1f447;&#xff1a; p18 第10题 c语言代码实现王道数据结构课后代码题_哔哩哔哩_bilibili 本题代码如下 int search(int a[], int b[], int c[]) {int i 0;int j 0;int k 0;while (i < 5 && j < 5){if (a[i] < b[j])c[k] a[i];elsec[k…

一种可以实现安全便捷文件摆渡的跨网文件安全交换软件

为了保护数据的安全性和完整性&#xff0c;很多企业都采用了内外网物理隔离的方式&#xff0c;防止核心数据泄露或被恶意篡改。然而&#xff0c;这也给企业内部或与外部合作伙伴之间的文件交换带来了很多不便和挑战。如何在保证数据安全的前提下&#xff0c;实现跨网文件的快速…

系列十一、拦截器(二)#案例演示

一、案例演示 说明&#xff1a;如下案例通过springboot的方式演示拦截器是如何使用的&#xff0c;以获取Controller中的请求参数为切入点进行演示 1.1、前置准备工作 1.1.1、pom <dependencies><!-- spring-boot --><dependency><groupId>org.spring…

self.register_buffer方法使用解析(pytorch)

self.register_buffer就是pytorch框架用来保存不更新参数的方法。 列子如下&#xff1a; self.register_buffer("position_emb", torch.randn((5, 3)))第一个参数position_emb传入一个字符串&#xff0c;表示这组参数的名字&#xff0c;第二个就是tensor形式的参数…

阿里云二级域名绑定与宝塔Nginx反向代理配置

在阿里或者腾讯...各大域名商买好域名&#xff0c;备案解析好&#xff0c;目标URL&#xff0c;是真正的地址&#xff0c;比如一些端口&#xff0c;后者会自动填写。 注意ssl配置好&#xff0c;这里不要带反代端口

在PostgreSQL中创建和管理数据库

PostgreSQL是一个强大、开源的关系型数据库管理系统&#xff0c;它提供了丰富的功能和灵活的配置选项&#xff0c;使得它成为许多开发者和组织的首选数据库之一&#xff0c;接下来我会介绍如何在PostgreSQL中创建和管理数据库。 一、安装和配置PostgreSQL 第一步&#xff0c;…

[动态规划] (十一) 简单多状态 LeetCode 面试题17.16.按摩师 和 198.打家劫舍

[动态规划] (十一) 简单多状态: LeetCode 面试题17.16.按摩师 和 198.打家劫舍 文章目录 [动态规划] (十一) 简单多状态: LeetCode 面试题17.16.按摩师 和 198.打家劫舍题目分析题目解析状态表示状态转移方程初始化和填表顺序 代码实现按摩师打家劫舍 总结 注&#xff1a;本题与…

Web服务器的搭建

网站需求&#xff1a; 1.基于域名www.openlab.com可以访问网站内容为 welcome to openlab!!! 2.给该公司创建三个网站目录分别显示学生信息&#xff0c;教学资料和缴费网站&#xff0c;基于www.openlab.com/student 网站访问学生信息&#xff0c;www.openlab.com/data网站访问教…

3D 线激光相机的激光条纹中心提取方法

论文地址:Excellent-Paper-For-Daily-Reading/application/centerline at main 类别:应用——中心线 时间:2023/11/06 摘要 线激光条纹中心提取是实现线激光相机三维扫描的关键,根据激光三角测量法研制了线激光相机,基于传统 Steger 法对其进行优化并提出一种适用于提…

变压器试验VR虚拟仿真操作培训提升受训者技能水平

VR电气设备安装模拟仿真实训系统是一种利用虚拟现实技术来模拟电气设备安装过程的培训系统。它能够为学员提供一个真实、安全、高效的学习环境&#xff0c;帮助他们更好地掌握电气设备的安装技能。 华锐视点采用VR虚拟现实技术、MR混合现实技术、虚拟仿真技术、三维建模技术、人…

深入了解5米DEM:地表高程的数字呈现与广泛应用

引言 数字高程模型&#xff08;DEM&#xff09;是现代地理信息系统和地图制图的核心要素之一。它以数字矩阵的形式连续地记录了地表的高程变化&#xff0c;为国家空间地理信息的重要组成部分。本文将介绍5米DEM的概念、构建方法以及广泛的应用领域。 5米DEM的概念 5米DEM是一种…

【Qt之QtXlsx模块】安装及使用

1. 安装Perl&#xff0c;编译QtXlsx源码用 可以通过命令行进行查看是否已安装Perl。 下载及安装传送门&#xff1a;链接: https://blog.csdn.net/MrHHHHHH/article/details/134233707?spm1001.2014.3001.5502 1.1 未安装 命令&#xff1a;perl --version 显示以上是未安装…

网络编程打开的第一节预备课-----关于socket

一、引言 传统的进程间通信借助内核提供的 IPC 机制进行, 但是只能限于本机通信, 若 要跨机通信, 就必须使用网络通信&#xff0c;比如之前在操作系统学习到的pipe通信&#xff0c;这是一个本机通信&#xff0c;是最基本的IPC机制进行的。 socket网络通信和pipe通信的区别在于…

AVL树性质和实现

AVL树 AVL是两名俄罗斯数学家的名字&#xff0c;以此纪念 与二叉搜索树的区别 AVL树在二叉搜索树的基础上增加了新的限制&#xff1a;需要时刻保证每个树中每个结点的左右子树高度之差的绝对值不超过1 因此&#xff0c;当向树中插入新结点后&#xff0c;即可降低树的高度&…

nn.embedding函数详解(pytorch)

提示&#xff1a;文章附有源码&#xff01;&#xff01;&#xff01; 文章目录 前言一、nn.embedding函数解释二、nn.embedding函数使用方法四、模型训练与预测的权重变化探讨 前言 最近发现prompt工程(如sam模型)&#xff0c;也有transform的detr模型等都使用了nn.Embedding函…