当前位置: 首页 > news >正文

(原)Matlab的svmtrain和svmclassify

转载请注明出处:

http://www.cnblogs.com/darkknightzh/p/5554551.html

参考网址:

http://www.cnblogs.com/zhangchaoyang/articles/2222048.html

 

代码如下:

clc
clear all
close all

data = load('data.txt');
% 为了svmtrain能使用'showplot',true,此处使用数据的前2维。
data = data(:, 1:2); 
% 由于svmtrain只能处理二分类问题,因而此处使用前100个数据。
data = data(1:100, :);
label = [ones(50, 1); zeros(50, 1)];

trainData = data(1:40, :);                  % 每组前40个用于训练
trainData = [trainData; data(51:90, :)];    % 每组前40个用于训练
testData = data(41:50, :);                  % 每组后10个用于测试
testData = [testData; data(91:100, :)];     % 每组后10个用于测试

trainLabel = label(1:40, :);                % 每组前40个用于训练
trainLabel = [trainLabel; label(51:90, :)]; % 每组前40个用于训练
testLabel = label(41:50, :);                % 每组后10个用于测试
testLabel = [testLabel; label(91:100, :)];  % 每组后10个用于测试

% 将距离和类别传入svm中,trainLabel为标签,即类别,trainData为特征
svmModel = svmtrain(trainData, trainLabel,'kernel_function','linear','showplot',true);
predict_label = svmclassify(svmModel,testData,'showplot',true); 
fprintf('使用svmclassify,正确率:%f\n' ,sum(predict_label==testLabel)/size(testLabel,1));

%% 以下两种方式均使用linear核,其他的核还不清楚怎么算
testScale = [];
for c = 1:size(testData, 2)
    testScale = [testScale, svmModel.ScaleData.scaleFactor(c) * (testData(:,c) +  svmModel.ScaleData.shift(c))];
end

% 方式1:使用矩阵形式
predictValMat = (svmModel.SupportVectors * testScale')' * svmModel.Alpha + svmModel.Bias; % 测试样本个数*1的列矩阵
predictValMat1 = ones(size(predictValMat));
predictValMat1(predictValMat>0) = 0;
fprintf('使用矩阵形式,正确率:%f\n' ,sum(predictValMat1==testLabel)/size(testLabel,1));

% 方式2:一个一个计算
[m,n]=size(testScale);
predict_label2=zeros(m,1); 
for k = 1:size(testScale, 1)
    % svmModel.SupportVectors为 支持向量个数*特征维数 的矩阵
    % testScale(k, :)为 1*特征维数 的行向量。
    % svmModel.SupportVectors * testScale(k, :)'为 支持向量个数*1 的列矩阵
    % (svmModel.SupportVectors * testScale(k, :)')' * svmModel.Alpha 即为 sum(w*x)
    % predictVal为 sum(w*x)+b
    predictVal = (svmModel.SupportVectors * testScale(k, :)')' * svmModel.Alpha + svmModel.Bias;
    if predictVal>0
       predict_label2(k) = 0;
    else
       predict_label2(k) = 1;
    end
end
fprintf('一个一个计算,正确率:%f\n' ,sum(predict_label2==testLabel)/size(testLabel,1));

分类结果:

 

svmtrain后的结果(包含了svmclassify的结果),其中蓝色圈出来的点为分错的点。

实际上,如果4个特征都使用的话,对上面的程序,正确率为100%。

ps:测试数据为参考网址中给出的数据。

鹫尾花数据集共分为3类花(前50个样本为一类,中间50个样本为一类,后50个样本为一类。由于matlab的svmtrain只能处理二分类问题,因而程序中使用了前100个数据。其中,每组前40个用作训练,后10个用作测试。因而,训练样本80个,测试样本20个。除此之外,为了在调用svmtrain时能显示分类结果,该函数参数'showplot'设置为true。

 

data.txt如下:

5.1        3.5        1.4        0.2
4.9        3.0        1.4        0.2
4.7        3.2        1.3        0.2
4.6        3.1        1.5        0.2
5.0        3.6        1.4        0.2
5.4        3.9        1.7        0.4
4.6        3.4        1.4        0.3
5.0        3.4        1.5        0.2
4.4        2.9        1.4        0.2
4.9        3.1        1.5        0.1
5.4        3.7        1.5        0.2
4.8        3.4        1.6        0.2
4.8        3.0        1.4        0.1
4.3        3.0        1.1        0.1
5.8        4.0        1.2        0.2
5.7        4.4        1.5        0.4
5.4        3.9        1.3        0.4
5.1        3.5        1.4        0.3
5.7        3.8        1.7        0.3
5.1        3.8        1.5        0.3
5.4        3.4        1.7        0.2
5.1        3.7        1.5        0.4
4.6        3.6        1.0        0.2
5.1        3.3        1.7        0.5
4.8        3.4        1.9        0.2
5.0        3.0        1.6        0.2
5.0        3.4        1.6        0.4
5.2        3.5        1.5        0.2
5.2        3.4        1.4        0.2
4.7        3.2        1.6        0.2
4.8        3.1        1.6        0.2
5.4        3.4        1.5        0.4
5.2        4.1        1.5        0.1
5.5        4.2        1.4        0.2
4.9        3.1        1.5        0.1
5.0        3.2        1.2        0.2
5.5        3.5        1.3        0.2
4.9        3.1        1.5        0.1
4.4        3.0        1.3        0.2
5.1        3.4        1.5        0.2
5.0        3.5        1.3        0.3
4.5        2.3        1.3        0.3
4.4        3.2        1.3        0.2
5.0        3.5        1.6        0.6
5.1        3.8        1.9        0.4
4.8        3.0        1.4        0.3
5.1        3.8        1.6        0.2
4.6        3.2        1.4        0.2
5.3        3.7        1.5        0.2
5.0        3.3        1.4        0.2
7.0        3.2        4.7        1.4
6.4        3.2        4.5        1.5
6.9        3.1        4.9        1.5
5.5        2.3        4.0        1.3
6.5        2.8        4.6        1.5
5.7        2.8        4.5        1.3
6.3        3.3        4.7        1.6
4.9        2.4        3.3        1.0
6.6        2.9        4.6        1.3
5.2        2.7        3.9        1.4
5.0        2.0        3.5        1.0
5.9        3.0        4.2        1.5
6.0        2.2        4.0        1.0
6.1        2.9        4.7        1.4
5.6        2.9        3.6        1.3
6.7        3.1        4.4        1.4
5.6        3.0        4.5        1.5
5.8        2.7        4.1        1.0
6.2        2.2        4.5        1.5
5.6        2.5        3.9        1.1
5.9        3.2        4.8        1.8
6.1        2.8        4.0        1.3
6.3        2.5        4.9        1.5
6.1        2.8        4.7        1.2
6.4        2.9        4.3        1.3
6.6        3.0        4.4        1.4
6.8        2.8        4.8        1.4
6.7        3.0        5.0        1.7
6.0        2.9        4.5        1.5
5.7        2.6        3.5        1.0
5.5        2.4        3.8        1.1
5.5        2.4        3.7        1.0
5.8        2.7        3.9        1.2
6.0        2.7        5.1        1.6
5.4        3.0        4.5        1.5
6.0        3.4        4.5        1.6
6.7        3.1        4.7        1.5
6.3        2.3        4.4        1.3
5.6        3.0        4.1        1.3
5.5        2.5        4.0        1.3
5.5        2.6        4.4        1.2
6.1        3.0        4.6        1.4
5.8        2.6        4.0        1.2
5.0        2.3        3.3        1.0
5.6        2.7        4.2        1.3
5.7        3.0        4.2        1.2
5.7        2.9        4.2        1.3
6.2        2.9        4.3        1.3
5.1        2.5        3.0        1.1
5.7        2.8        4.1        1.3
6.3        3.3        6.0        2.5
5.8        2.7        5.1        1.9
7.1        3.0        5.9        2.1
6.3        2.9        5.6        1.8
6.5        3.0        5.8        2.2
7.6        3.0        6.6        2.1
4.9        2.5        4.5        1.7
7.3        2.9        6.3        1.8
6.7        2.5        5.8        1.8
7.2        3.6        6.1        2.5
6.5        3.2        5.1        2.0
6.4        2.7        5.3        1.9
6.8        3.0        5.5        2.1
5.7        2.5        5.0        2.0
5.8        2.8        5.1        2.4
6.4        3.2        5.3        2.3
6.5        3.0        5.5        1.8
7.7        3.8        6.7        2.2
7.7        2.6        6.9        2.3
6.0        2.2        5.0        1.5
6.9        3.2        5.7        2.3
5.6        2.8        4.9        2.0
7.7        2.8        6.7        2.0
6.3        2.7        4.9        1.8
6.7        3.3        5.7        2.1
7.2        3.2        6.0        1.8
6.2        2.8        4.8        1.8
6.1        3.0        4.9        1.8
6.4        2.8        5.6        2.1
7.2        3.0        5.8        1.6
7.4        2.8        6.1        1.9
7.9        3.8        6.4        2.0
6.4        2.8        5.6        2.2
6.3        2.8        5.1        1.5
6.1        2.6        5.6        1.4
7.7        3.0        6.1        2.3
6.3        3.4        5.6        2.4
6.4        3.1        5.5        1.8
6.0        3.0        4.8        1.8
6.9        3.1        5.4        2.1
6.7        3.1        5.6        2.4
6.9        3.1        5.1        2.3
5.8        2.7        5.1        1.9
6.8        3.2        5.9        2.3
6.7        3.3        5.7        2.5
6.7        3.0        5.2        2.3
6.3        2.5        5.0        1.9
6.5        3.0        5.2        2.0
6.2        3.4        5.4        2.3
5.9        3.0        5.1        1.8

 

 

 

相关文章:

  • Fastclick 导致click事件触发两次的问题,fastclickclick
  • 用spring-data-redis实现类似twitter的网站(转)
  • [javaSE] GUI(事件监听机制)
  • android WebViewClient和WebChromeClient
  • vim列模式编辑
  • kafka集群发送消息报错
  • apache2 启用php7.0
  • Android 仿网易新闻v3.5:上下滑动的引导页
  • C语言基础
  • angularjs与require的集成摘抄
  • rsync远程数据备份配置之再次总结
  • HP DL580 G7设置IPMI
  • 面试题与答案
  • Gluon公布完整的Java 9 Mobile创新举措
  • Linux运维(数据库专题)面试题
  • [NodeJS] 关于Buffer
  • 【跃迁之路】【733天】程序员高效学习方法论探索系列(实验阶段490-2019.2.23)...
  • Babel配置的不完全指南
  • DOM的那些事
  • PaddlePaddle-GitHub的正确打开姿势
  • PHP面试之三:MySQL数据库
  • REST架构的思考
  • Tornado学习笔记(1)
  • Vue2.0 实现互斥
  • 第十八天-企业应用架构模式-基本模式
  • 仿天猫超市收藏抛物线动画工具库
  • 官方解决所有 npm 全局安装权限问题
  • 诡异!React stopPropagation失灵
  • 机器人定位导航技术 激光SLAM与视觉SLAM谁更胜一筹?
  • 基于webpack 的 vue 多页架构
  • 思否第一天
  • 思维导图—你不知道的JavaScript中卷
  • 移动端解决方案学习记录
  • 好程序员大数据教程Hadoop全分布安装(非HA)
  • (zt)基于Facebook和Flash平台的应用架构解析
  • (附源码)spring boot网络空间安全实验教学示范中心网站 毕业设计 111454
  • (附源码)springboot太原学院贫困生申请管理系统 毕业设计 101517
  • (十七)Flask之大型项目目录结构示例【二扣蓝图】
  • (一)RocketMQ初步认识
  • (原创)boost.property_tree解析xml的帮助类以及中文解析问题的解决
  • (转)C#开发微信门户及应用(1)--开始使用微信接口
  • (转)chrome浏览器收藏夹(书签)的导出与导入
  • **PyTorch月学习计划 - 第一周;第6-7天: 自动梯度(Autograd)**
  • .NET 6 Mysql Canal (CDC 增量同步,捕获变更数据) 案例版
  • .NET 8.0 中有哪些新的变化?
  • .net websocket 获取http登录的用户_如何解密浏览器的登录密码?获取浏览器内用户信息?...
  • .net 按比例显示图片的缩略图
  • .NET设计模式(7):创建型模式专题总结(Creational Pattern)
  • /run/containerd/containerd.sock connect: connection refused
  • ::before和::after 常见的用法
  • @RequestMapping处理请求异常
  • [ CTF ] WriteUp- 2022年第三届“网鼎杯”网络安全大赛(白虎组)
  • []sim300 GPRS数据收发程序
  • [android] 练习PopupWindow实现对话框
  • [AR]Vumark(下一代条形码)