LibLinear(SVM包)使用说明之(三)实践

我们在 UFLDL 的教程中, Exercise: Convolution and Pooling 这一章节,已经得到了 cnnPooledFeatures.mat 特征。在该练习中,我们使用的是 softmax 分类器来分类的。在这里我们修改为用 SVM 来替代 softmax 分类器。 SVM 由 Liblinear 软件包来提供。这里是四分类问题,所以 Liblinear 会根据我们传入的训练样本训练四个二分类器,以实现四分类。以前由 softmax 分类器得到的准确率是 80.406% 。在这里换成 Liblinear 后,准确率变为 80.75% 。在这里差别不是很大。

在本文的例子中,我们增加了 scale 和 Cross Validation , Cross Validation 是用来选择一个最好的参数 C 的(不知道自己这两个步骤有没有正确,如有错误,还望大家提醒,谢谢)。

具体的代码如下:

%// Classification by LibLinear%// LibLinear: http://www.csie.ntu.edu.tw/~cjlin/liblinear/%// Author : zouxy%// Date : 2013-9-2%// HomePage : http://blog.csdn.net/zouxy09%// Email : zouxy09@qq.comclear; clc;%%% step1: load datafprintf(1,'step1: Load data...\n');% pooledFeaturesTrain大小为400*2000*3*3% pooledFeaturesTest大小为400*3200*3*3% 第一维是特征个数,也就是特征图个数,第二维是样本个数,第三维是特征图的宽,% 第四维是特征图的高load cnnPooledFeatures.mat;load stlTrainSubset.mat % loads numTrainImages, trainImages, trainLabelsload stlTestSubset.mat % loads numTestImages, testImages, testLabels% B = permute(A,order) 按照向量order指定的顺序重排A的各维train_X = permute(pooledFeaturesTrain, [1 3 4 2]);% 将每个样本的特征拉成一个列向量,每个样本一个列,矩阵大小为3600*2000train_X = reshape(train_X, numel(pooledFeaturesTrain) / numTrainImages, numTrainImages);train_Y = trainLabels; % 2000*1test_X = permute(pooledFeaturesTest, [1 3 4 2]);test_X = reshape(test_X, numel(pooledFeaturesTest) / numTestImages, numTestImages);test_Y = testLabels;% release some memoryclear trainImages testImages pooledFeaturesTrain pooledFeaturesTest;%%% step2: scale the datafprintf(1,'step2: Scale data...\n');% Using the same scaling factors for training and testing sets, % we obtain much better accuracy. Note: scale each attribute(feature), not sample% scale to [0 1]% when a is a vector, b = (a - min(a)) .* (upper - lower) ./ (max(a)-min(a)) + lowerlower = 0;upper = 1.0;train_X = train_X';X_max = max(train_X);X_min = min(train_X);train_X = (train_X - repmat(X_min, size(train_X, 1), 1)) .* (upper - lower) ..../ repmat((X_max - X_min), size(train_X, 1), 1) + lower;test_X = test_X';test_X = (test_X - repmat(X_min, size(test_X, 1), 1)) .* (upper - lower) ..../ repmat((X_max - X_min), size(test_X, 1), 1) + lower;% Note: before scale the accuracy is 80.4688%, after scale it turns to 80.1875%,% and took more time. So is that my scale operation wrong or other reasons?% After adding bias, Accuracy = 80.75% (2584/3200)%%% step3: Cross Validation for choosing parameterfprintf(1,'step3: Cross Validation for choosing parameter c...\n');% the larger c is, more time should be costedc = [2^-6 2^-5 2^-4 2^-3 2^-2 2^-1 2^0 2^1 2^2 2^3];max_acc = 0;tic;for i = 1 : size(c, 2)option = ['-B 1 -c ' num2str(c(i)) ' -v 5 -q'];fprintf(1,'Stage: %d/%d: c = %d, ', i, size(c, 2), c(i));accuracy = train(train_Y, sparse(train_X), option);if accuracy > max_accmax_acc = accuracy;best_c = i;endendfprintf(1,'The best c is c = %d.\n', c(best_c));toc;%%% step4: train the modelfprintf(1,'step4: Training...\n');tic;option = ['-c ' num2str(c(best_c)) ' -B 1 -e 0.001'];model = train(train_Y, sparse(train_X), option);toc;%%% step5: test the modelfprintf(1,'step5: Testing...\n');tic;[predict_label, accuracy, dec_values] = predict(test_Y, sparse(test_X), model);toc;

欢迎加入我爱机器学习QQ14群:336582044

微信扫一扫,关注我爱机器学习公众号

liblinear java_LibLinear(SVM包)使用说明之(三)实践相关推荐

  1. LibLinear(SVM包)使用说明之(三)实践

    LibLinear(SVM包)使用说明之(三)实践 zouxy09@qq.com http://blog.csdn.net/zouxy09 我们在UFLDL的教程中,Exercise: Convolu ...

  2. LibLinear(SVM包)使用说明之(一)README

    LibLinear(SVM包)使用说明之(一)README LibLinear(SVM包)使用说明之(一)README zouxy09@qq.com http://blog.csdn.net/zoux ...

  3. LibLinear(SVM包)使用说明之(二)MATLAB接口

    LibLinear(SVM包)使用说明之(二)MATLAB接口 zouxy09@qq.com http://blog.csdn.net/zouxy09 一.介绍 LIBLINEAR是一个简单的求解大规 ...

  4. Linux内核网络数据包发送(三)——IP协议层分析

    Linux内核网络数据包发送(三)--IP协议层分析 1. 前言 2. `ip_send_skb` 3. `ip_local_out` and `__ip_local_out` 3.1 netfilt ...

  5. linux过滤端口抓包_TCP 协议三次握手抓包分析amp;查看状态

    关注爱因诗贤每天进步一点点导读 前面文章介绍了 TCP 报文头部的格式,TCP 协议是一个面向连接的协议,所以在使用 TCP 协议之前需要先建立连接,而建立连接就需要先 握手,在握手的时候就会有 TC ...

  6. 小青蛙oracle跟踪,《小青蛙》三实践三反思观课报告

    第 1 页 共 3 页 小青蛙小青蛙 三实践三反思观课报告三实践三反思观课报告 1 月 2 日下午 我们低年级组 识字写字教学的 易课堂 课例研修照常进行中 这是赵琳老师 小青 蛙 课题的三实践三反思 ...

  7. MKS SERVO42C 闭环步进电机 使用说明(三)串口通讯

    第1部分 硬件介绍 1.1 硬件清单 序号 品名 数量 1 MKS SERVO42C V1.0(包含电机) 1 2 PCBA连接线 1 3 串口助手模块/单片机 1 4 DC 12V-24V电源 1 ...

  8. Shiny平台构建与R包开发(三)——数据输出

    作为Shiny平台构建与R包开发教程的第三小节,本节向读者展示如何利用Shiny server输出自己想要的数据,包括Rplot.Table.Text等信息. 数据输出机制 仍以上一节的案例为基础: ...

  9. opsforlist 存在贼覆盖_RedisTemplate常用集合使用说明-opsForList(三)

    基础配置介绍已经在前面的<RedisTemplate常用集合使用说明(一)>中已经介绍了,现在我们直接介绍opsForList()方法的使用: 1.leftPush(K key, V va ...

最新文章

  1. Hibernate的配置文件 Hibernate.cfg.xml与xxx.hbm.xml
  2. python开发的比较知名的游戏-游戏排行榜-Python实现
  3. centos下载速度很慢解决办法
  4. 【WPF】屏幕右下角消息提示框
  5. html鼠标点击有手势出来,用原生js+css3撸的一个下拉手势事件插件
  6. .post与 .ajax,关于post与ajax post的数据类型
  7. (50)FPGA状态机描述(三段式)
  8. 信息系统项目管理师备考指南
  9. 中孚保密检查客户端 完全卸载_中孚计算机终端保密检查工具
  10. kali linux 无线攻击——aircrack-ng
  11. 读书笔记图灵传,算法
  12. 计算机高级职称答辩ppt模板,毕业论文答辩PPT模板优秀 范例 11.ppt
  13. 史上最全 | 编程入门指南
  14. sublime出现中文乱码
  15. 60分钟教你上手PyTorch + 迁移学习
  16. vivado安装步骤
  17. 高性能Excel操作工具
  18. 人工智能及其应用——第一章学习笔记
  19. Uva 11374 - Airport Express(枚举+最短路)
  20. python娱乐 -- 源码实现 叮当猫小猪佩奇羊吃草 动画

热门文章

  1. 什么是闭包(Closure)?
  2. 计算机视觉之三维重建-SFM系统
  3. 强化学习:(一)基本概念
  4. MATLAB图像处理学习——高通滤波(频域滤波(二))
  5. 我与js的恩怨之斗灵阶段
  6. 搞砸了瑞幸咖啡,资本老炮陆正耀会把小面毁了吗?
  7. 查看linux的系统信息
  8. 常见的敏感文件泄漏总结
  9. 事到如今已经不敢问的tcpdump的使用方法
  10. c++中的# ifndef 与#endif