传统的SVM做的事情其实就是找到一个超平面,实现二分类,一类+1,一类-1。如上所示。它的目的就是使得两类的间隔最大。只要确定了间隔最大和两边距离相等,就能确定唯一平面。黑色的块表示距离分割面最近的样本向量,称为支持向量。

对于不可分问题,引入核函数,将数据点由二维向三维映射,从而在空间上进行分离和寻找超平面

图片来源https://www.bilibili.com/video/BV1o64y1i7yw

K就是核函数,做一个内积的运算。SVM中核函数保证了低维空间里的计算量,输出到高维空间里。K相当于隐含层的神经元

在学习书上代码发现已经很旧了,更新一下,根据Matlab2018b 自带SVM算法函数fitcsvm(svmtrain已被删除)实现,并依靠predict(svmclassify)对建立的SVM模型对测试数据进行分类。
以往的绘图选项plot(true)也找不到了,根据https://www.freesion.com/article/980718683/绘图分界线


clc;
clear;
close all;
traindata=[0,1;-1,0;2,2;3,1;-2,-2;-4,2;2,-1;-1,-3]; %生成样本的属性数据
lable=[1;1;-1;-1;1;1;-1;-1]; %样本标签
testdata=[5,2;3,1;-4,2]; %测试数据的属性数据
svm_struct=fitcsvm(traindata,lable);%训练SVM模型
testlable=predict(svm_struct,testdata); %依据测试样本对模型进行测试
sb= svm_struct.SupportVectors;%将Sb指定为支持向量
gscatter(traindata(:,1),traindata(:,2),lable,'br','..',8);
hold on;
gscatter(testdata(:,1),testdata(:,2),testlable,'br','..',20);
hold on;
[Xa,Xb] = meshgrid(-5:0.2:5,-5:0.2:5);
% 这是我的取点范围, 感觉效果不错, 也可以自己改改
[~,score] = predict(svm_struct,[Xa(:),Xb(:)]);
% 对网格进行分类结果的计算
scoreGrid = reshape(score(:,2),size(Xa,1),size(Xb,2));
% 改变score的行数和列数, 使之和网格[X1,X2]中的点一一对应
contour(Xa,Xb,scoreGrid,[0 0]);% 绘制等高线, 最后一个参数[0 0] 就是只绘制出score值为0的点的等高线, 也就是分界线.
hold on;
plot(sb(:,1),sb(:,2),'r>','MarkerSize',10);
legend('-1(train)','1(train)','-1(test)','1(test)','分界线','Support Vector');
hold off

机器学习—SVM原理及简单代码实现(matlab)相关推荐

  1. svm matlab 画图,SVM简单代码实现MATLAB

    一.前言 在推导出SVM公式的基础上,就可以考虑动手实现了.SVM解决分类问题,这里用MATLAB来实现,具体就不多说了,所以首先给出两种标记不同的点,然后分别标记为+1,-1.先训练,再测试,最后画 ...

  2. 机器学习:支持向量机SVM原理与理解

    引言 --"举牌子:Support Vector Machines " 一直在犹豫要不要写SVM,因为网上已经有很多详细的SVM原理的解释甚至详细推导,而这东西又庞大复杂,想了解的 ...

  3. 看不懂掐死我系列之支持向量机(SVM)从原理到python代码实现

    在如下图所示的二分类问题里,我们在训练分类器时就是希望找到一个最优的超平面.直观来讲,我们希望找到如图所示的一个通道(Margin)能够区分正负样本,最大化其宽度,取其中间线为超平面.直观来说,这样得 ...

  4. SVM原理及代码实现(学习笔记)

    1.概念 支持向量机(Support Vector Machine, SVM)是一类按监督学习(supervised learning)方式对数据进行二元分类的广义线性分类器(generalized ...

  5. 机器学习--SVM(支持向量机)核函数原理以及高斯核函数

    最近小小地研究了一下SVM,发现这个算法还是相当有意思,今天来给大家讲讲其原理. 首先假设每个样本的特征值为X1.X2...到Xn,即有n个特征值.θ1.θ2.θ3...θn为对应权值. 那么要将上图 ...

  6. 机器学习简单代码示例

    机器学习简单代码示例 //在gcc-4.7.2下编译通过. //命令行:g++ -Wall -ansi -O2 test.cpp -o test #include <iostream> u ...

  7. 机器学习:SVM的最朴素代码实现,第一个变量遍历样本获得,第二个变量随机选择

    文章目录 SVM的最朴素代码实现: 代码实现: 第一个变量遍历样本获得,主要步骤如下: 第二个变量随机选择: 计算w: 其他: SVM的最朴素代码实现: 算法简单步骤: 1.遍历样本作为第一个变量a1 ...

  8. 多类线性分类器算法原理及代码实现 MATLAB

    多类线性分类器算法原理及代码实现 MATLAB 一.算法原理 下面举例说明为何蓝圈部分在case2中是确定的而在case1中不确定: 二.代码实现 1.HK函数 function [] = HK(w1 ...

  9. matlab 数控插补实验,数控插补原理及G代码编程实验.ppt

    数控插补原理及G代码编程实验 数控插补原理及G代码编程实验 机械工程实验教学中心 数控插补原理及G代码编程实验 ★ 二维插补原理实验 ★ 数控代码编程实验 1 实验目的 ★ 使学生掌握逐点比较法.数字 ...

最新文章

  1. 数据结构及算法基础--优先队列(Priority Queue)
  2. 【Linux】一步一步学Linux——ncat命令(159)
  3. Clojure的学习笔记(二)
  4. nginx开机自启动
  5. OpenCV基本线条操作
  6. azure mysql无法连接_java - 无法从Azure的JAVA功能连接到Azure的MySQL数据库 - SO中文参考 - www.soinside.com...
  7. 项目进度计划检查方法与项目进度管理相关模版表单(干货+资料)
  8. Windows系统没有目标位置的快捷方式及其目标文件获取
  9. Win10安装ST-Link驱动--无需下载驱动
  10. 记七彩虹刷bios问题
  11. python小说电子书阅读系统毕业设计开题报告
  12. 唯美的英文短文!!!
  13. 2021年保育员(中级)考试及保育员(中级)考试总结
  14. 麻省理工成立计算机学院,麻省理工学院斥资10亿美元建新计算机学院
  15. MySQL SQL语句面试准备
  16. 网络端口流量监测工具ifstat
  17. ftp 之 servU 15.1的安装及配置
  18. iphone11夜景模式怎么开
  19. 【图像处理】小波编码图像中伪影和纹理的检测(Matlab代码实现)
  20. matlab中频率选择性衰落信道,浅海水声信道模型分析及频率选择性衰落仿真

热门文章

  1. arcgis根据7参转坐标_ArcGIS和COORD进行坐标七参数转换国家2000方法(可下载坐标转换工具)...
  2. 嵌入式开发 1 -8051单片机的结构体系(待更)
  3. PSCP和SCP区别和用法
  4. Word文档中如何快速切换英文大小写?掌握这个方法轻松完成
  5. python rgb颜色表_RGB颜色对照表
  6. 优思学院|2020年10月美质协六西格玛黑带ASQ CSSBB考试经历……
  7. python打开已有的excel并写入数据
  8. TA入门笔记·美术向(一)
  9. 实验室主任在ISO 15189认可准备中应该扮演什么样的角色
  10. quadl matlab,MATLAB求一元函数的数值积分(quad,quadl,quadv),大师来详解