手把手教你机器学习之支持向量机
1.支持向量机SVM的基本原理:
SVM就是解决线性不可分的算法。
将数据投射到高维空间,这正是SVM算法的核函数的功能.
在SVM中用得最普遍的两种把数据投射到高维空间的方法分别是多项式内核和径向基内核(RBF)。其中多项式内核比较容易理解,它是通过把样本原始特征进行乘方来把数据投射到高维空间。至于RBF内核,将在之后的例子中展示。
2.SVM算法的优势与不足:
SVM可以说是在机器学习领域非常强大的算法,SVM应对高维数据集和低维数据集都还算是得心应手。但是,前提条件是数据集的规模不算大。如果数据集中的样本数量在一万以内,SVM都能驾驭的了,但是如果样本数量超过十万的话,SVM就会非常耗费时间和内存。
SVM还有一个短板,就是对于数据预处理和参数调节要求非常高。所以现在很多场景下大家都会更乐意使用随机森林算法或者是梯度上升决策树算法。因为它们不需要对数据进行预处理,也不用费尽心机去调参。
其中gamma值越小,模型越倾向于欠拟合,gamma值越大,模型越倾向于过拟合。
至于正则化参数,C值越小,模型就越简单,C值越大,模型就越复杂。
3.SVM实例——波士顿房价回归分析:
#导入波士顿房价数据集
from sklearn.datasets import load_boston
boston=load_boston()
from sklearn.model_selection import train_test_split
#导入支持向量回归模型
from sklearn.svm import SVR
X,y=boston.data,boston.target
X_train,X_test,y_train,y_test=train_test_split(X,y,random_state=8)
for kernel in ['linear','rbf']:
svr=SVR(kernel=kernel)
svr.fit(X_train,y_train)
print(kernel,'核函数的测试集得分:{}'.format(svr.score(X_test,y_test)))
结果分析:
从结果中可以看到,两种核函数的模型得分都不能令人满意,并且rbf的正确率很低很低,这是什么原因导致的呢?
这是因为数据集的各个特征之间的量级差的比较远。
SVM算法对数据预处理的要求是比较高的,如果数据特征量级差异较大,我们就需要对数据进行预处理。
为了让SVM算法能够更好的拟合数据,我们必须对数据集进行预处理。代码如下:
#导入波士顿房价数据集
from sklearn.datasets import load_boston
boston=load_boston()
from sklearn.model_selection import train_test_split
X,y=boston.data,boston.target
X_train,X_test,y_train,y_test=train_test_split(X,y,random_state=8)
from sklearn.preprocessing import StandardScaler
sca=StandardScaler()
sca.fit(X_train)
X_train_sca=sca.transform(X_train)
X_test_sca=sca.transform(X_test)
#导入支持向量回归模型
from sklearn.svm import SVR
for kernel in ['linear','rbf']:
svr=SVR(kernel=kernel)
svr.fit(X_train_sca,y_train)
print(kernel,'核函数的测试集得分:{}'.format(svr.score(X_test_sca,y_test)))
结果分析:
从结果中可以看到,经过预处理之后,‘linear’内核的SVR得分变化不大,而‘rbf’内核的SVR得分有了巨大的提升。尤其是在测试集中的得分,已经提高到非常接近linear内核的模型了,那么如果我们进一步调整‘rbf’模型的参数,会有什么表现呢?
和SVC一样,SVR也有‘gamma’和‘C’两个参数,接下来我们试着对这两个参数进行修改:
svr=SVR(C=100,gamma=0.1)
svr.fit(X_train_sca,y_train)
print('调整参数后的模型在测试集上的得分:{}'.format(svr.score(X_test_sca,y_test)))
结果分析:
这是一个比较不错的结果,我们看到通过参数调节,‘rbf’内核的SVR模型在测试集上的得分,可以说现在模型的表现已经是可以接受的了。
小结:
SVM算法对于数据预处理和调参的要求都是非常高的了。
相关文章
- LeNet神经网络总结
花了一个礼拜时间从零开始查资料,学习了LeNet神经网络的基本架构,看遍各位大神的blog总结,都写的很好,这里以我一个入门的视角,从更容易的理解角度,整理记录下来,供以后消化和深入 先看LeNet网…...
2023/6/4 1:08:33 - python2迁移python3的问题
▌使用 pathlib 模块来更好地处理路径 pathlib 是 Python 3默认的用于处理数据路径的模块,它能够帮助我们避免使用大量的 os.path.joins语句: from pathlib import Path dataset wiki_images datasets_root Path(/path/to/datasets/) train_path dat…...
2023/5/31 0:32:48 - python3可以运行python2的代码吗_机器学习从Python 2迁移到Python 3,你需要注意的一些事……...
▌从类型提示(运行前)到类型检查(运行时) 默认情况下,函数的注释对于代码的运行是没有影响的,它只是帮你指出每段代码所要做的工作。 在代码运行阶段,很多时候类型提示工具是不起作用的。这种情况你可以使用 enforce 等工具,强制性…...
2023/5/29 13:53:37 - opencv 牛人博客,参考网站
(转自http://blog.csdn.net/gykimo/article/details/8638982) 原文地址:blog.csdn.net/carson2005 以下链接是本人整理的关于计算机视觉(ComputerVision, CV)相关领域的网站链接,其中有CV牛人的主页,CV研究…...
2023/6/7 3:07:59 - 【机器学习实战】第6章 支持向量机(Support Vector Machine / SVM)
第6章 支持向量机 <script type"text/javascript" src"http://cdn.mathjax.org/mathjax/latest/MathJax.js?configdefault"></script> 支持向量机 概述 支持向量机(Support Vector Machines, SVM):是一种机器学习算法。 支持向量(…...
2023/4/17 4:36:41 - 愉快地迁移到 Python 3
(点击上方公众号,可快速关注)编译: Python开发者 - 冲动老少年 英文:Alex Rogozhnikovhttp://python.jobbole.com/89031/为数据科学家准备的 Python 3 特性指南Python 已经成为机器学习和一些需处理大量数据的科学领…...
2023/5/19 14:09:35 - 大数据技术之Hadoop3.1.2版本HA模式
大数据技术之Hadoop3.1.2版本HA模式 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任。 一.Hadoop的HA特点 1>.主备NameNode 2>.解决单点故障(属性,位置) 1.主NameNode对外提…...
2023/6/3 8:52:08 - OpenCV - 参考网站、牛人博客
OpenCV - 参考网站、牛人博客 2013-03-05 17:40 2266人阅读 评论(0) 收藏 举报 本文章已收录于: 分类: 其他(8) 作者同类文章X原文地址:blog.csdn.net/carson2005 以下链接是本人整理的关于计算机视觉(…...
2023/6/4 15:40:44 - 基于持量机的机学策(源码)
原 基于支持向量机的机器学习策略(附源码) 机器学习策略简介 什么是机器学习策略? 从广义上来说,机器学习是一种能够赋予机器学习的能力以此让它完成直接编程无法完成的功能的方法.但从实践的意义上来说,机器学习是一种通过利用数据,训练出模型,然后使用模型预测的一种…...
2023/6/2 22:08:03 - 【机器学习实战】第6章 支持向量机
第6章 支持向量机 <script type"text/javascript" src" http://cdn.mathjax.org/mathjax/latest/MathJax.js?configdefault"></script > 支持向量机 概述 支持向量机(Support Vector Machines, SVM):是一种机器学习算法。 支持向…...
2023/6/1 10:32:12 - 面向实时嵌入式系统的图形用户界面支持系统――MiniGUI编译、安装和配置
简介: 对开放源码的自由软件来说,程序员得到的通常是源代码。在编译源代码并正确安装和配置的过程中,往往会涉及到许多工具和函数库,因此其过程经常显得有些繁复,从而也导致许多程序员望而生畏。本文重点介绍了 MiniGU…...
2023/5/27 3:36:29 - Apache Hadoop 2.9.2 的HDFS High Available模式部署
Apache Hadoop 2.9.2 的HDFS High Available 模式部署 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任。 我们知道,当NameNode进程挂掉后,可以通过SecondName进行补救,我们可以快速…...
2023/6/7 3:09:14 - 神经网络(优化算法)
文章转载自:http://www.52analysis.com/R/1627.html 神经网络(优化算法) 人工神经网络(ANN),简称神经网络,是一种模仿生物神经网络的结构和功能的数学模型或计算模型。神经网络由大量的人工神经元联结进行计算。大多数情况下人工神经网络能在…...
2023/6/3 14:48:27 - 在Python 2.7即将停止支持时,我们为你准备了一份3.x迁移指南
目前,Python 科学栈中的所有主要项目都同时支持 Python 3.x 和 Python 2.7,不过,这种情况很快即将结束。去年 11 月,Numpy 团队的一份声明引发了数据科学社区的关注:这一科学计算库即将放弃对于 Python 2.7 的支持&…...
2023/5/18 18:19:50 - matlab中的BP神经网络
BP神经网络 训练前馈网络的第一步是建立网络对象。函数newff()建立一个可训练的前馈网络。这需要4个输入参数。 第一个参数是一个Rx2的矩阵以定义R个输入向量的最小值和最大值。 第二个参数是一个设定每层神经元个数的数组。 第三个参数是包含每层用到的传递函数名称的细胞数组…...
2023/6/2 2:01:23 - R似然比检验(likelihood ratio test)
R似然比检验(likelihood ratio test) 一个似然比检验(likelihood ratio test)比较了两个回归模型的拟合优度的差异。 嵌套模型(nested model)简单地说就是一个回归模型中包含的预测变量(predictor)完全地包含在另一个更加复杂的模型中。 例如,假设我们有以下具有四个…...
2023/5/29 4:05:16 - SpringBoot中关于RunWith以及SpringBootTest
SpringBoot单元测试 RunWith 在JUnit中有很多个Runner,他们负责调用你的测试代码,每一个Runner都有各自的特殊功能,你要根据需要选择不同的Runner来运行你的测试代码。 如果我们只是简单的做普通Java测试,不涉及Spring Web项目&…...
2023/5/29 1:38:38 - 【FPGA学习之路】06_如何写testbench的verilog 代码?(一看就懂)
写作时间:2021-03-12 使用的FPGA开发板:xilinx KC705 开发环境: vivado2019.1 Readme: 昨天在流水灯的代码中添加了“按键消抖”功能。上板也进行了测试,测试结果OK。 但是对于有些上板测试,有时候还不能完全反应出逻…...
2023/5/24 6:09:49 - CANoe教程:自动化测试功能-Test Module/Test Unit
概述 CANoe的测试模块包括Test Module和Test Unit两大组件,并且集成了TFS测试功能集(Test Feature Set)和TSL测试服务库(Test Service Library)来帮助用户实现高效的自动化测试。 TFS是CANoe扩展出来的一系列测试功能…...
2023/6/1 14:19:38 - plugins:maven-surefire-plugin:2.22.2:test (default-test) on project nacosConsumer: There are test fa
一、本人的项目结构如下 ps: springcloudAlibaba 为父工程, 二、子工程在 执行install 或者 package 时报以下错误 plugins:maven-surefire-plugin:2.22.2:test (default-test) on project nacosConsumer: There are test failures. (报错主要信息&…...
2023/6/6 3:15:50
最新文章
- POSTGRESQL SERVERLESS 是POSTGRESQL 数据库的未来 (译)
开头还是介绍一下群,如果感兴趣polardb ,mongodb ,mysql ,postgresql ,redis 等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。加群请联系 liuaustin3 ,在新加的朋友会分到2群(共…...
2023/6/9 12:58:02 - DOC文件丢失怎么恢复?用这7种方法找回
在日常生活和工作中,我们经常会因为各种原因丢失重要的DOC文件,这给我们带来了不小的困扰。但是,不必担心,在本文中,我们将带大家了解一下DOC文件丢失怎么恢复。 关于DOC文件 DOC文件是指一种微软公司开发的文字处理软…...
2023/6/9 12:57:52 - apktool for mac
安装步骤 1、Apktool下载 安装apktool Apktool下载 macOS: Download Mac wrapper script (Right click, Save Link As apktool)Download apktool-2 (find newest here)Rename downloaded jar to apktool.jarMove both files (apktool.jar & apktool) to /usr/local/bin …...
2023/6/9 12:57:33 - 工作流表单相关配置
1.表单整体字段说明 {"key": "key",//表单唯一key"name": "name",//用于展示的表单名称"description": "description【PC定制表单】",//表单用途相关描述如果是自定义表单需要添加 【PC定制表单】"fields&q…...
2023/6/9 12:57:15 - flutter多版本切换
方式一:符号连接(软链接) 注:无需修改环境变量,也不用重启AndroidStudio mac具体flutter版本切换操作步骤: 1、项目clean然后切换自己需要的分支 2、删除文件夹flutter目录文件(这里的flutter是原来的符号连接&…...
2023/6/9 12:56:43 - mysql的基本架构
MySQL基本架构可以分为Server层和存储引擎层两部分。其中,Server层包括连接器、查询缓存、分析器、优化器、执行器等模块。这些模块实现了MySQL的核心服务功能和内置函数,以及所有跨存储引擎的功能,比如存储过程、触发器、视图等。而存储引擎…...
2023/6/9 12:55:59 - Python数据攻略-Pandas的数据创建与基础特性
大家好,我是Mr数据杨!今天将进入Python的Pandas数据世界,就像三国演义中的英雄们,用聪明才智塑造自己的命运。 记得三国中,周瑜曾利用兵法巧妙策划火烧赤壁,击败曹军。这就像创建一个Pandas DataFrame&…...
2023/6/9 12:55:48 - 浅谈数明深力科隔离驱动器SLMi8235BD 车载充电器(OBC)方案
数明深力科SLMi823x系列SLMi8235BD隔离驱动技术优势:具有高性能、高性价比、高可靠性的产品特性,应用覆盖UPS、充电桩、服务器电源、通信电源、新能源汽车动力总成系统的车载 OBC 领域。通过CQC认证的。 车载充电器(OBC)是电动汽…...
2023/6/9 12:51:51 - 第1讲:XMLHttpRequest详解(ajax基础)
XMLHTTPRequest对象 XMLHTTPRequest对象,是基于XML的HTTP请求。XMLHTTPRequest是一个浏览器接口,使得Javascript可以进行HTTP(S)通讯。自从浏览器提供了XMLHTTPRequest这个接口之后,ajax操作就此诞生。 AJAX Asynchronous JavaScript and X…...
2023/6/9 12:51:18 - 【数据恢复、安全和备份解决方案】上海道宁与LSoft为企业提供先进的技术来处理现代数据安全和保存问题
需要备份和恢复磁盘、 恢复已删除的文档和照片、 安全擦除磁盘、 监控硬盘健康状况、 甚至在Windows 无法正常启动时修复 PC? Active Data Studio是 一组桌面应用程序 和可引导CD/DVD或USB磁盘 用于将任何系统引导至 Windows恢复环境 开发商介绍 LSoft Te…...
2023/6/9 12:50:13 - 成功解决AttributeError: module ‘numpy‘ has no attribute ‘float‘.
成功解决AttributeError: module numpy has no attribute float. 问题描述解决方案一:解决方案二: 问题描述 AttributeError: module ‘numpy’ has no attribute ‘float’. np.float was a deprecated alias for the builtin float. To avoid this er…...
2023/6/9 12:50:01 - ssm+java汽车销售分析与管理系统
此次设计一款汽车销售分析与管理系统,能够对当前销售的车辆的日销售、季度销售以及年度销售进行统计分析、对于车辆的入库出库进行了准确的信息录入。对于销售人员的销售情况进行登记和统计,能够对整个店面的财务情况、盈利情况进行统计。同时对于以上数…...
2023/6/9 12:49:48 - UnityVR--组件7--动画事件BlendTree
目录 应用1:使用BlendTree实现站立和移动 应用2:人物跳跃事件&播放跳跃动画 应用3:开火动画事件&动画片段中建立事件监听 上一篇(组件5--Animation动画)已经做了2个动画片段,HeroIdle和HeroJump…...
2023/6/9 12:49:31 - 如何在Windows中将所有本地安全策略设置重置为默认设置
本地安全策略(secpol.msc)是一个 Microsoft 管理控制台(MMC)管理单元,其中包含管理员可以在计算机或多个设备上配置的规则,用于保护设备或网络上的资源。 本地组策略编辑器(gpedit.msc)管理单元的安全设置扩展允许你将安全配置定义为组策略对象(GPO)的一部分。 你必…...
2023/6/9 12:49:14 - Docker网络教程(二)host 网络教程
使用 host 网络的联网 本系列的教程涉及直接绑定在 Docker 宿主机网络上而不隔离网络的独立容器的联网问题。如果想了解更多 Docker 网络的理论知识,参考概述。 目的 本教程的目的是启动一个 nginx 容器,直接绑定到 Docker 宿主机的80端口。从网络的角…...
2023/6/9 12:48:45 - python3写一个http接口服务(get, post),给别人调用6
python3写一个http接口服务(get, post),给别人调用6 一、python3写一个http接口服务(get, post),给别人调用6 近年来异步web服务器比较火热,例如falcon/bottle/sanic/aiohttp,今天也来玩玩sanic。 Sanic是一个支持Python 3.7的w…...
2023/6/9 12:48:29 - Qt6 C++基础入门3 对话框与MainWindow
目录 对话框MainWindow菜单工具栏 对话框 目前的对话框主要有以下几大类 文件对话框( QFile Dialog)消息对话框( QMessageBox)输入对话框( QInputDialog)颜色对话框( QColorDialog)字体对话框( QFontDialog) 这是七大对话框及其基本用法的实例参考,所有代码都写在…...
2023/6/9 12:48:18 - ETC人车关系查询-ETC人车关系查询api接口
接口地址: https://登录后显示/api/189/363(支持:http/https)) 接口页面:https://www.wapi.cn/api_detail/189/363.html 网站地址:https://www.wapi.cn 接口简介:核验指定人员/企业是否是指定车辆的 ETC 开户人、车辆所有人或 E…...
2023/6/9 12:47:51 - 一文说清,4G语音工牌与WIFI和蓝牙语音工牌的区别
作为一种创新的无线音频采集和传输设备,4G语音工牌在许多行业和领域都展现出了巨大的优势和广泛的应用场景。 比如在销售场景和服务场景,利用4G语音工牌和NLP、语音识别、机器学习等技术结合,可实现: 帮销售型企业:提…...
2023/6/9 12:47:36 - Linux远程管理协议(RFB、RDP、Telnet和SSH)
提到远程管理,通常指的是远程管理服务器,而非个人计算机。个人计算机可以随时拿来用,服务器通常放置在机房中,用户无法直接接触到服务器硬件,只能采用远程管理的方式。 远程管理,实际上就是计算机…...
2023/6/9 12:46:36