sklearn svm如何选择核函数_机器学习之支持向量机多种核模型对比

机器学习

xueyifeiyun1989zx,公众号:围着围巾的小黑机器学习之监督学习实战

        前文我们提到机器学习中的监督学习,其中有一个模型是我们提到的但是没有训练测试的,叫做支持向量机(简称SVM)。支持向量机也是监督学习里面一个非常容易理解的模型。概念和公式定义我们就不带大家看了,我们还是从代码实战的角度来学习。

        SVM本质原理是利用超平面将数据分割成可分的部分,对于可分的数据集来说不用做维度转换,那么对于不可分的数据集要想利用SVM怎么办呢,是有办法的,就是核函数。核函数的存在的意义就是将低维不可分的数据转化成高维可分的数据,从而实现对数据的分类。本文主要关注不同SVM中的核函数,因为我们主要是应用为主,所以只会提高各种核函数并做相关的代码实践,不会对各种核函数的原理进行分析。

        另外还有一个问题是需要在本文解决的,大家如果前文仔细看的话,会发现在整个训练和预测的过程中,我们生成了两个数据集,操作起来有点麻烦,那么是否有现成的方法可以自动帮我们将数据集切分成训练集和测试集呢,答案显然是肯定的。

1、导入依赖包、生成基础数据集

from sklearn.datasets import make_classificationimport matplotlib.pyplot as pltfrom sklearn import preprocessingfrom sklearn.model_selection import train_test_splitfrom sklearn.svm import SVCfrom sklearn.metrics import accuracy_scoreimport matplotlib.pyplot as pltimport mpl_toolkits.mplot3d# 生成基础特征数据,该数据包含100条记录,每条记录包含两个特征X,y = make_classification(n_samples = 10000,\n_features = 3,n_redundant = 0,n_repeated = 0)

2、对数据集合进行拆分和模型训练

# 生成训练集和测试集train_x,test_x,train_y,test_y = train_test_split(X,y)# 选择linear核函数,在sklearn中,其模型默认的核函数的rbfsvm = SVC(kernel = 'linear')svm.fit(train_x,train_y)

3、模型预测

# 在训练集上预测predict_train = svm.predict(train_x)# 在训练集上准确率accuracy_score(train_y,predict_train)# 0.8693# 在测试集上预测predict_test = svm.predict(test_x)# 在测试集上准确率accuracy_score(test_y,predict_test)# 0.8573

4、模型可视化

# 分别生成预测正确的和预测错误的数据集合predictTure = test_x[test_y == predict_test]predictFalse = test_x[test_y != predict_test]# 定义一个画图的方法,输入的参数为预测正确和预测错误的数据集合def plot3DPredictStatus(predictTure,predictFalse):    # 创建一个三维的绘图工程    ax = plt.subplot(projection = '3d')     # 设置图名称    ax.set_title('3d_predict_show')     # 绘制数据点 color: 'r'红色,'b'蓝色等颜色    # x代表预测错误的数据 ,o代表预测正确的数据    ax.scatter(predictTure[:,0], \    predictTure[:,1], predictTure[:,2],\     c = 'r',marker = 'o',cmap = 'coolwarm')     ax.scatter(predictFalse[:,0],\     predictFalse[:,1], predictFalse[:,2], \     c = 'b',marker = 'x',cmap = 'coolwarm')     # 设置x坐标轴    ax.set_xlabel('X')     # 设置y坐标轴    ax.set_ylabel('Y')      # 设置z坐标轴    ax.set_zlabel('Z')      # 画图     plt.show()# 画图函数调用plot3DPredictStatus(predictTure,predictFalse)

8327bd4d95a53cf11a1a1bc3a6c0972a.png

图、在预测集上正确的点(红色)和错误(蓝色)的点

5、对比不同核函数的效果

        通过查看sklearn的SVM相关的参数说明(如下图),知道其至少提供linear、poly、rbf、sigmod、precomputed等核函数。

d33b18f7714d03e00f6f3cc39f2e55cc.png

图、sklearn中SVM相关的核函数类型说明

# 定义模拟多个核函数的方法def multkernelCompare():    print('{:>10s}|{:8s}'.format('kernel','accuracy'))    for kernel in ['linear','poly','rbf','sigmoid']:        svm = SVC(kernel = kernel)        svm.fit(train_x,train_y)        accuracy =accuracy_score(test_y,svm.predict(test_x))        print('{:>10s}|{:8.4f}'.format(kernel,accuracy))# 不同核函数对比方法调用multkernelCompare()

0978491aca29da2071f095b6d540caf0.png

图、不同核函数预测结果的准确性对比

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

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

相关文章

程序员过关斩将--从每秒6000写请求谈起

点击上方“蓝字”关注我们菜菜哥,紧急求助呀怎么回事?产品经理砍你了?没有,只是写了个新项目,上线就被压垮了什么功能,这么强悍?一个记录用户观看视频进度信息的功能那如果用户基数大&#xff0…

批量将PPM格式图片转化为JPG格式

将PPM格式图片转化为JPG格式 做图像识别的时候数据集常常是ppm格式的,虽然不影响建模训练,但是我们电脑往往不支持ppm格式的图像展示。 比如到做交通标志识别的时候用到的BelgiumTS交通数据集或者德国GTSRB数据集 下载后得到都是ppm格式的图像。 格式转…

Magicodes.IE 2.2里程碑需求和建议征集

简介Magicodes.IE是导入导出通用库,支持Dto导入导出以及动态导出,支持Excel、Word、Pdf、Csv和Html。已加入NCC开源组织。Magicodes.IE 2.0发布Github:https://github.com/dotnetcore/Magicodes.IE码云(手动同步,不维护…

交通标志识别教程(二)

项目结构图 下载好项目压缩包后解压,得到以上的文件,首先将画红圈的文件删除(如果有) 安装软件 解压软件包 安装Anaconda 直接下一步,到了这个页面全部勾选,否则不会添加添加环境变量。 安装Pycharm …

深度长文:Power Automation 帮助企业实现数字化转型

01自动化始于您在Ignite 2019上,我们宣布将Flow更改为Power Automate,并在UI Flow连接器的公开预览中引入了机器人流程自动化(RPA)。我们对几种激动人心的功能感到兴奋,这些功能将在今年全面上市,并想花一点…

什么样的女生适合学计算机?

我需要在这一行中加一些字数,为什么呢?因为我的字数不够300字,无法声明原创,所以我会在这里加一些字数,它们是白色的,你应该看不到,如果你此刻看到了,那你真的太机智了。300字&#…

ora-00923数据类型不一致_小白学 Python(2):基础数据类型(上)

如果我的文章对您有帮助,请关注支持下作者的公众号:极客挖掘机,获取最新干货推送:)人生苦短,我选Python引言前文传送门小白学 Python(1):开篇接触一门新的语言,肯定要先了解它的基础数据类型。啥…

如何将项目上传到github详细完整版

今天介绍如何利用pycharm创建一个新的项目,然后将项目上传到github,以便日后的学习记录,和版本管理。比如现在我想创建一个项目专门用来学习和研究时间序列算法。 创建虚拟环境 # 创建一个新的虚拟环境 conda create -n TimeSeries python3…

[Abp vNext微服务实践] - 搭建租户管理服务

一、简介ABP模板项目中已经提供了租户登录和管理功能,但是模板项目是单体应用结构,无法单独部署租户服务,所以难以满足微服务的需求。本篇文章将会介绍搭建ABP租户管理服务,并单独部署应用。二、创建工程2.1 创建TenantService.Ho…

编写高性能的C#代码(三)使用SPAN

原文来自互联网,由长沙DotNET技术社区编译。如译文侵犯您的署名权或版权,请联系小编,小编将在24小时内删除。作者介绍:史蒂夫戈登(Steve Gordon)是Microsoft MVP,Pluralsight的作者,…

pycharm配置git拉取项目代码,并添加版本控制

安装Git 打开网页进入git官网,找到git官网下载地址,下载git工具并且安装。 pycharm配置git 点击File -> Settings -> Version Control -> Git 选择Git安装的路径,点击OK 选择一个项目 进入我们需要拉取的项目,点击…

.NET Core开发实战(第22课:异常处理中间件:区分真异常与逻辑异常)--学习笔记(上)...

22 | 异常处理中间件:区分真异常与逻辑异常这一节我们来讲解一下错误处理的最佳实践系统里面异常处理,ASP.NET Core 提供了四种方式1、异常处理页2、异常处理匿名委托方法3、IExceptionFilter4、ExceptionFilterAttribute源码链接:https://gi…

MYSQL开窗函数详解

基本概念 MYSQL8.0支持窗口函数(Window Function),也称分析函数。窗口函数与组分聚合函数类似,但是每一行数据都会生成一个结果。如果我们将mysql与pandas中的DataFrame做类比学习的话他们的对应关系如下: SQL分组聚…

你可能需要了解一下的中台

【中台学习】| 作者 / Edison Zhou这是恰童鞋骚年的第201篇原创文章在数字化转型热潮下,各家企业都想建设中台,那么中台是怎么发展起来的?有哪些类型的中台?中台到底是个啥?本文为你一一解答这些问题。1学习背景与前言…

github运行不流畅问题

快速流畅访问Github工具 下载链接如下: 链接:https://pan.baidu.com/s/1RwdrNK__Vx-AEuUr8sM6pg 提取码:a0tw –来自百度网盘超级会员V3的分享 下载后解压,双击运行.exe文件 运行后长这样,给它丢一边不管就行了。

聊聊微信的Dark模式

大家好,我是Z哥。这周微信公布了一个我期待已久的好消息。周一的时候对外公布说,已经完成了iOS版本的Dark模式开发,可能会在下一个版本上线。▲截图来源于微博,版权归原作者所有真的是千呼万唤使出来,很多人期待这个功…

chrome浏览器快速访问stackoverflow

原因:国内网非常多的网站都使用免费的 Google CDN 服务来加载某些 js、字体样式库以提升网页浏览体验,例如 jQuery、Google Fonts。但是目前 Google 的大多数网站在大陆无法正常访问,因此这些本身是加快网页载入的库反而成为了阻塞网站加载的…

【开源要闻】Canonical发布新OpenStack工具、Kubernetes访客引导方法

Canonical发布支持CephFS的OpenStack Charms 20.02Canonical近日宣布了OpenStack Charms 20.02的全面上市,这是用于在Ubuntu上设计,构建和管理OpenStack私有云的强大工具的主要版本。OpenStack Charms 20.02是一个令人兴奋的版本,它增加了主要…

开窗函数(1)-部门工资前三员工

已知表 题目 公司的主管们感兴趣的是公司每个部门中谁赚的钱最多。一个部门的 高收入者 是指一个员工的工资在该部门的 不同 工资中 排名前三 。 编写一个SQL查询,找出每个部门中 收入高的员工 。 以 任意顺序 返回结果表。 示例 参考答案 selectbase.Departmen…

Asp.Net Core 中IdentityServer4 授权中心之自定义授权模式

一、前言上一篇我分享了一篇关于 Asp.Net Core 中IdentityServer4 授权中心之应用实战的文章,其中有不少博友给我提了问题,其中有一个博友问我的一个场景,我给他解答的还不够完美,之后我经过自己的学习查阅并阅读了相关源代码&…