在matlab环境下实现支持向量机算法
来源:互联网 发布:vscode 插件开发 编辑:程序博客网 时间:2024/05/26 16:02
作者:faaronzheng 转载请注明出处!
关于支持向量机的理论部分我就不进行介绍了,网上有很多关于支持向量机的讲解。如: 支持向量机通俗导论(理解SVM的三层境界)有兴趣的可以自行查找一下。这里我主要介绍一下如何在matlab环境下自己实现支持向量机算法。
需要用到的工具:matlab,cvx工具包
首先需要配置一下cvx的环境。cvx的配置和具体语法请参考 CVX Users’ Guide。cvx工具包和手册
接下来我们直接从最后推导出的对偶形式入手(不清楚为什么是这个形式及各个符号意思的还请参考理论部分)
function arf=getArf(xapp1,xapp2,C,eveSigma) format long;data=[xapp1;xapp2];K=CreateKernelMatrix(data,data,eveSigma); %构造核矩阵label1=ones(size(xapp1,1),1);label2=ones(size(xapp2,1),1);label2(:,1)=2;label=[label1;label2];n=size(data,1);vecone=ones(n,1);cvx_begin %用cvx优化目标函数variable arf(n);expression part1;expression part2;part1=vecone'*arf; part2=quad_form(arf,label'*K*label);max part1-1/2*part2;subject to %约束条件for i=1:n arf(i)>=0; arf(i)<=C;endarf'*label==0;cvx_end end
上面这段代码的主要目的是获得拉格朗日乘子α。一定有人想问知道α有什么用呢?这是因为超平面都可以用α来表示。
拉格朗日乘子α不为零的即为支持向量。这样就可以求出w和b了。将w和b求出后我们就可以得到超平面。有了超平面就可以进行分类啦!
PS.上面代码中构造核矩阵的代码我是参考的SimpleMKL中的代码。具体可以参考Code部分
2 0
- 在matlab环境下实现支持向量机算法
- 支持向量机(SVM)算法的matlab的实现
- MATLAB支持向量机SVM代码实现
- 支持向量机及MATLAB实现
- 支持向量机SVM的MATLAB实现
- matlab支持向量机
- 利用SVM(支持向量机)和MNIST库在OpenCV环境下实现手写数字0~9的识别
- 6.3 支持向量机算法(下)
- 支持向量机算法及其代码实现
- 支持向量机算法及其代码实现
- 支持向量机算法及其代码实现
- python实现支持向量机SVM算法
- MATLAB 安装支持向量机
- 支持向量机SVM 原理、推导与Matlab实现
- 支持向量机算法
- 支持向量机(下)
- 机器学习---支持向量机(SVM)算法(下)
- 机器学习---支持向量机(SVM)算法应用(下)
- iOS系类教程之用instruments来检验你的app
- HTTP协议中的编码问题
- Linux Mint (应用软件— 翻译工具:有道词典)
- 经典sql语句大全(特指Mysql)
- Swift 关联Storyboard中的controller解决UICollectionView must be initialized with a non-nil layout parameter
- 在matlab环境下实现支持向量机算法
- linux hadoop 2.7 伪分布式安装简单几步实现
- 转载:android:layout_gravity和android:gravity的区别
- python入门教程
- Cocoadpods的使用
- native c++/qt中如何调用c#dll
- MinGW+Notepad++编译运行 C++代码
- Win7远程连接常出现的密码错误
- leetcode题库之258