机器学习算法(分类算法)—支持向量机(4)
一、回顾
二、非线性问题的处理方法
![](/assets/blank.gif)
1、核函数的定义(摘自《统计机器学习》)
2、常用核函数
- 多项式核函数(Polynomial Kernel Function)
- 高斯核函数(Gaussian Kernel Function)
三、非线性支持向量机
四、实验仿真
![](/assets/blank.gif)
![](https://code.csdn.net/assets/CODE_ico.png)
- %% 非线性支持向量机
- % 清空内存
- clear all;
- clc;
- % 导入测试数据
- A = load('testSetRBF.txt');
- %% 区分开训练数据与测试数据
- m = size(A);%得到整个数据集的大小
- trainA = A(11:m(1,1),:);
- testA = A(1:10,:);
- % 训练和测试数据集的大小
- mTrain = size(trainA);
- mTest = size(testA);
- % 区分开特征与标签
- Xtrain = trainA(:,1:2);
- Ytrain = trainA(:,mTrain(1,2))';
- Xtest = testA(:,1:2);
- Ytest = testA(:,mTest(1,2))';
- %% 对偶问题,用二次规划来求解,以求得训练模型
- sigma = 0.5;%高斯核中的参数
- H = zeros(mTrain(1,1),mTrain(1,1));
- for i = 1:mTrain(1,1)
- for j = 1:mTrain(1,1)
- H(i,j) = GaussianKernalFunction(Xtrain(i,:),Xtrain(j,:),sigma);
- H(i,j) = H(i,j)*Ytrain(i)*Ytrain(j);
- end
- end
- f = ones(mTrain(1,1),1)*(-1);
- B = Ytrain;
- b = 0;
- lb = zeros(mTrain(1,1),1);
- % 调用二次规划的函数
- [x,fval,exitflag,output,lambda] = quadprog(H,f,[],[],B,b,lb);
- % 定义C
- C = max(x);
- % 求解原问题
- n = size(x);
- k = 1;
- for i = 1:n(1,1)
- Kernel = zeros(n(1,1),1);
- if x(i,1) > 0 && x(i,1)<C
- for j = 1:n(1,1)
- Kernel(j,:) = GaussianKernalFunction(Xtrain(j,:),Xtrain(i,:),sigma);
- Kernel(j,:) = Kernel(j,:)*Ytrain(j);
- end
- b(k,1) = Ytrain(1,i)-x'*Kernel;
- k = k +1;
- end
- end
- b = mean(b);
- %% 决策函数来验证训练准确性
- trainOutput = zeros(mTrain(1,1),1);
- for i = 1:mTrain(1,1)
- Kernel_train = zeros(mTrain(1,1),1);
- for j = 1:mTrain(1,1)
- Kernel_train(j,:) = GaussianKernalFunction(Xtrain(j,:),Xtrain(i,:),sigma);
- Kernel_train(j,:) = Kernel_train(j,:)*Ytrain(j);
- end
- trainOutput(i,1) = x'*Kernel_train+b;
- end
- for i = 1:mTrain(1,1)
- if trainOutput(i,1)>0
- trainOutput(i,1)=1;
- elseif trainOutput(i,1)<0
- trainOutput(i,1)=-1;
- end
- end
- % 统计正确个数
- countTrain = 0;
- for i = 1:mTrain(1,1)
- if trainOutput(i,1) == Ytrain(i)
- countTrain = countTrain+1;
- end
- end
- trainCorrect = countTrain./mTrain(1,1);
- %% 决策函数来验证测试准确性
- testOutput = zeros(mTest(1,1),1);
- for i = 1:mTest(1,1)
- Kernel_test = zeros(mTrain(1,1),1);
- for j = 1:mTrain(1,1)
- Kernel_test(j,:) = GaussianKernalFunction(Xtrain(j,:),Xtest(i,:),sigma);
- Kernel_test(j,:) = Kernel_test(j,:)*Ytrain(j);
- end
- testOutput(i,1) = x'*Kernel_train+b;
- end
- for i = 1:mTest(1,1)
- if testOutput(i,1)>0
- testOutput(i,1)=1;
- elseif testOutput(i,1)<0
- testOutput(i,1)=-1;
- end
- end
- % 统计正确个数
- countTest = 0;
- for i = 1:mTest(1,1)
- if testOutput(i,1) == Ytest(i)
- countTest = countTest+1;
- end
- end
- testCorrect = countTest./mTest(1,1);
- disp(['训练的准确性:',num2str(trainCorrect)]);
- disp(['测试的准确性:',num2str(testCorrect)]);
核函数
![](https://code.csdn.net/assets/CODE_ico.png)
- %% 高斯核函数,其中输入x和y都是行向量
- function [ output ] = GaussianKernalFunction( x,y,sigma )
- output = exp(-(x-y)*(x-y)'./(2*sigma^2));
- end
最终的结果为:
![](/assets/blank.gif)
机器学习算法(分类算法)—支持向量机(4)相关推荐
- [Python从零到壹] 十四.机器学习之分类算法五万字总结全网首发(决策树、KNN、SVM、分类对比实验)
欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...
- 机器学习分类算法_达观数据:5分钟带你理解机器学习及分类算法
1.本文介绍内容:什么是机器学习,机器学习有哪些分类算法,分类算法之k-近邻,决策树,随机森林2.本文适合人群:本文通过通俗易懂的语言和例子介绍核心思想,不拽高大上的名词,适合于不懂机器学习的小白3. ...
- 朴素贝叶斯算法-分类算法
朴素贝叶斯算法-分类算法 1 概率基础 概率定义为一件事情发生的可能性 联合概率:包含多个条件,且所有条件同时成立的概率,记作P(A,B) 条件概率:事件A在另一个事件B已经发生条件下的发送概率,记作 ...
- 机器学习:分类算法SVM(支持向量机)
支持向量机(Support Vector Machine ,SVM)的主要思想是:建立一个最优决策超平面,使得该平面两侧距离该平面最近的两类样本之间的距离最大化,从而对分类问题提供良好的泛化能力.对于 ...
- 15 分钟带你入门 sklearn 与机器学习(分类算法篇)
众所周知,Scikit-learn(以前称为scikits.learn)是一个用于Python编程语言的免费软件机器学习库.它具有各种分类,回归和聚类算法,包括支持向量机,随机森林,梯度增强,k-me ...
- Sklearn 损失函数如何应用到_15 分钟带你入门 sklearn 与机器学习(分类算法篇)...
众所周知,Scikit-learn(以前称为scikits.learn)是一个用于Python编程语言的免费软件机器学习库.它具有各种分类,回归和聚类算法,包括支持向量机,随机森林,梯度增强,k-me ...
- 机器学习中分类算法的优缺点
决策树 一. 决策树优点 1.决策树易于理解和解释,可以可视化分析,容易提取出规则. 2.可以同时处理标称型和数值型数据. 3.测试数据集时,运行速度比较快. 4.决策树可以很好的扩展到大型数据库中 ...
- 机器学习经典分类算法 —— C4.5算法(附python实现代码)
目录 理论介绍 什么是分类 分类的步骤 什么是决策树 决策树归纳 信息增益 相关理论基础 计算公式 ID3 C4.5 python实现 参考资料 理论介绍 什么是分类 分类属于机器学习中监督学习的一种 ...
- 【机器学习】分类算法-K-近邻算法
目标 说明K-近邻算法的距离公式 说明K-近邻算法的超参数K值以及取值问题 说明K-近邻算法的优缺点 应用KNeighborsClassifier实现分类 了解分类算法的评估标准准确率 应用:Face ...
- 机器学习5—分类算法之随机森林(Random Forest)
随机森林(Random Forest) 前言 一.随机森林 1.什么是随机森林 2.随机森林的特点 3.随机森林的生成 二.随机森林的函数模型 三.随机森林算法实现 1.数据的读取 2.数据的清洗和填 ...
最新文章
- vue引入图片路径的三种主要方法
- HDU1530(最大团问题)
- Android分级部门选择界面(一)
- 当心啊!仅仅50行Python,就可以在手机端看小姐姐的电脑桌面!
- qt5使用触屏 偶尔没响应_Qt5+VS2015编程入门示例及注意事项——打印九九乘法表...
- Requirements of an SAP system administrator
- JQuery AJAX基本使用
- Maven入门基础-环境篇
- 3.5 将 Batch Norm 拟合进神经网络
- Hyper-V 测试
- SVPWM算法原理及详解
- 日记侠:我为什么学习网络营销
- python画正态分布_python 画正态曲线
- vc语言c1083错误,vc++常见错误之二:“fatal error C1083: ”无法打开包括文件-Go语言中文社区...
- 【FinalIK】Full Body Biped IK
- proxyconnect tcp: dial tcp: lookup proxy.example.com on 8.8.8.8:53: no such host
- bugkuCTF---flag在index里
- 固态硬盘比机器硬盘好很多吗?
- ps还原上一步快捷键,ps还原上一步快捷键_photoshop恢复上一步操作的快捷键是什么...
- 史莱姆方块java_史莱姆 - Minecraft Wiki,最详细的官方我的世界百科
热门文章
- 《深入解析Windows操作系统》笔记第1章
- 计算机教育专业,关于计算机教育专业论文
- abaqus Linux 中文,SIMULIA ABAQUS 2016.0 Win64 Linux64 2DVD工程模拟的有限元
- 驰骋工作流程引擎——流程设计器操作说明书
- 如何编写发明专利说明书
- 服务器上虚拟内存怎么设置方法,服务器的虚拟内存设置方法
- excel批量修改文件名方法
- js 获取ulr问号后参数,返回Object对象
- 【思维导图软件哪个好】万彩脑图大师教程 | 编辑思维导图背景
- GIS教程之哪种语言更适合地理可视化:R 还是 Python?