环境搭建

  • 平台:

    • Windows PC
    • MATLAB 软件
    • libsvm库(SVM工具箱)
  • 安装步骤

  • 准备工作

    • 安装对应的编译器,在网站上查看当前matlab版本支持的编译器版本。本文使用的matlab 2015a版本(支持编译器详情)。
    • 通过查询,发现Microsoft Windows SDK7.1支持matlab 2015a,所以下面安装这个编译器。
    • 根据安装说明,在安装这个Windows SDK7.1之前,1)首先需要安装最新的Windows service Pack,用于更新(ps:猜测每个电脑都默认安装,所以在安装过程中直接忽视了这条要求)。2)安装Microsoft .NET Framework 4,用于支持安装Microsoft Windows SDK7.1
  • 安装libsvm

    • 在libsvm官网上查找相应的libsvm库,选择MATLAB and OCTAVE语言,下载最新版的libsvm-3.22.zip
    • 下载后把工具包放在MATLAB安装目录下的toolbox文件夹中,例如, D:\Learn program\matlab2015a\toolbox\libsvm-3.22。
    • 假设你使用的是64位的操作系统和matlab。打开matlab,在matlab目录中添加(set path):D:\Learn program\matlab2015a\toolbox\libsvm-3.22\windows。因为windows下包含了matlab可执行的二进制文件libsvmread.mexw64/libsvmwrite.mexw64/svmpredict.mexw64/svmtrain.mexw64
    • 在matlab中,进入到D:\Learn program\matlab2015a\toolbox\libsvm-3.22\matlab目录下。运行mex –setup,此时按照LIBSVM在matlab下的使用安装文中提到的步骤继续操作。
    • 但是由于接口的问题,又出现警告:

      MEX 配置为使用 ‘Microsoft Visual C++ 2012 (C)’ 以进行 C 语言编译。

      警告: MATLAB C 和 Fortran API 已更改,现可支持

      包含 2^32-1 个以上元素的 MATLAB 变量。不久以后,您需要更新代码以利用新的 API。您可以在以下网址找到相关详细信息:http://www.mathworks.com/help/ma ... use-64-bit-api.html。
      
    • 根据 关于libsvm工具箱在64位matlab下的安装说明文中提到的方法,进行下面关键两步:

      • 切换matlab运行目录至:D:\Learn program\matlab2015a\toolbox\libsvm-3.22\matlab,在命令行输入make,也就是该目录下的那个make文件。这时候就像以前安装libsvm一样,会自动make出来很多文件,不用管,主要是会看到make出带有mexm64后缀名的文件,这就成功了。
      • 拷贝第一步中matlab文件夹下所有make出来的文件(.mex64),到libsvm-3.22\windows文件夹下,全部替换。这样就可以了。
  • 测试(此处将libsvm-3.22中文heart_scale拷贝到libsvm-3.22\matlab目录下,运行下面的语句)

    123
     [heart_scale_label,heart_scale_inst]=libsvmread('heart_scale');model = svmtrain(heart_scale_label,heart_scale_inst, '-c 1 -g 0.07');[predict_label, accuracy, dec_values] =svmpredict(heart_scale_label, heart_scale_inst, model); % test the trainingdata
  • 测试结果,出现如下结果表明安装成功

    123456
    optimization finished, #iter = 134nu = 0.433785obj = -101.855060, rho = 0.426412nSV = 130, nBSV = 107Total nSV = 130Accuracy = 86.6667% (234/270) (classification)

SVM参数优化

MATLAB中三种得到最佳g和c参数的方法:

遗传算法(GA)选择最佳的SVM参数c&g

  • 在运行案例时,报错:Undefined function or variable 'rep'.,未找到rep函数,此时,需要安装GA的工具箱,下载英国谢菲尔德大学开发的遗传算法工具箱gatbx,可从此处下载

由于其中的函数扩展名是M,而不是m,需要将其全部改为小写的m,再把文件夹复制到toolbox中,加载至matlab,即可。

  • 函数接口介绍

    1234567891011121314151617
    (1)利用GA参数寻优函数(分类问题):gaSVMcgForClass[bestCVaccuracy,bestc,bestg,ga_option]= gaSVMcgForClass(train_label,train,ga_option)输入:train_label:训练集的标签,格式要求与svmtrain相同。train:训练集,格式要求与svmtrain相同。ga_option:GA中的一些参数设置,可不输入,有默认值,详细请看代码的帮助说明。输出:bestCVaccuracy:最终CV意义下的最佳分类准确率。bestc:最佳的参数c。bestg:最佳的参数g。ga_option:记录GA中的一些参数。\==========================================================(2)利用GA参数寻优函数(回归问题):gaSVMcgForRegress[bestCVmse,bestc,bestg,ga_option]= gaSVMcgForRegress(train_label,train,ga_option)其输入输出与gaSVMcgForClass类似,这里不再赘述。
  • 使用案例,加入gaSVMcgForClass.m函数

    123456789101112
    % GA的参数选项初始化ga_option.maxgen = 200;ga_option.sizepop = 20; ga_option.cbound = [0,100];ga_option.gbound = [0,100];ga_option.v = 5;ga_option.ggap = 0.9;% 得到最佳参数[bestacc,bestc,bestg] = gaSVMcgForClass(train_wine_labels,train_wine,ga_option);% 利用最佳的参数进行SVM网络训练cmd = ['-c ',num2str(bestc),' -g ',num2str(bestg)];model = svmtrain(train_wine_labels,train_wine,cmd);

PSO选择最佳的SVM参数c&g

  • 使用案例,加入psoSVMcgForClass.m函数

    12345
    % 得到最佳参数[bestacc,bestc,bestg] = psoSVMcgForClass(train_wine_labels,train_wine);% 利用最佳的参数进行SVM网络训练cmd = ['-c ',num2str(bestc),' -g ',num2str(bestg)];model = svmtrain(train_wine_labels,train_wine,cmd);

贪婪算法(Grid)选择最佳的SVM参数c&g

  • 使用案例,加入gridSVMcgForClass.m函数

    1234567
    % 首先进行粗略选择: c&g 的变化范围是 2^(-10),2^(-9),...,2^(10)[bestacc,bestc,bestg] = gridSVMcgForClass(train_wine_labels,train_wine,-10,10,-10,10);% 根据粗略选择的结果图再进行精细选择: c 的变化范围是 2^(-2),2^(-1.5),...,2^(4), g 的变化范围是 2^(-4),2^(-3.5),...,2^(4),[bestacc,bestc,bestg] = SVMcgForClass(train_wine_labels,train_wine,-2,4,-4,4,3,0.5,0.5,0.9);%% 利用最佳的参数进行SVM网络训练cmd = ['-c ',num2str(bestc),' -g ',num2str(bestg)];model = svmtrain(train_wine_labels,train_wine,cmd);

参考:

  1. LIBSVM在matlab下的使用安装
  2. 关于libsvm工具箱在64位matlab下的安装说明

SVM学习——在matlab上安装libsvm库(一)相关推荐

  1. 64位系统matlab上安装libsvm

    libsvm下载 下载地址:http://www.csie.ntu.edu.tw/~cjlin/libsvm/#download libsvm简介 LIBSVM是台湾大学林智仁(Lin Chih-Je ...

  2. matlab的libsvm程序,matlab中安装Libsvm 步骤

    源自:http://blog.sina.com.cn/s/blog_4fe347e60101h5uz.html 一.下载libsvm 在libsvm的网站上下载 libsvm-3.12.zip文件,解 ...

  3. [网摘学习]在Ubuntu上安装和配置OpenStack Nova之二

    再收藏一份Openstack的文章,这两天的操作与此相同.但其中出现的问题还需要查找原因.待个人继续学习研究. 原文参考:http://www.linuxde.net/2011/11/1599.htm ...

  4. matlab中安装libsvm时No supported compiler or SDK was found问题

    1. 安装libsvm时No supported compiler or SDK was found问题解决方法 参照帖子23楼解决方法:http://www.ilovematlab.cn/threa ...

  5. matlab成功安装libsvm后,运行程序仍报错“svmtrain has been removed”解决方法记录

    系统:windows11 版本:MATLAB R2018b matlab使用支持向量机做回归预测时需要安装 libsvm 包并进行编译,参考此链接博客<http://t.csdn.cn/CfFo ...

  6. linux上安装libpng库以及zlib库

    hello ,大家好,我是jordy,一只空着的杯子:欢迎各位朋友光临我的博客,多多沟通 ,我的QQ :   1760282809 363232564 http://blog.csdn.net/baw ...

  7. 一起来学习在Ubuntu上安装Budgie桌面

    Budgie 是最佳 Linux 桌面环境之一.希望通过这个简短的教程指南中你能学习到如何在 Ubuntu 上安装 Budgie 桌面. 在 Ubuntu 上安装 Budgie 此方法未在 Linux ...

  8. 在CentOS 6.3 64bit上安装libunwind库

    libunwind库为基于64位CPU和操作系统的程序提供了基本的堆栈辗转开解功能,32位操作系统不要安装.其中包括用于输出堆栈跟踪的API.用于以编程方式辗转开解堆栈的API以及支持C++异常处理机 ...

  9. 树莓派上安装boost库

    一.安装boost库 sudo apt-get install libboost-dev aptitude search boost 二.编写测试代码 1 #include <iostream& ...

最新文章

  1. MongoDB自增主键
  2. Unity OBB分包(基础APK+OBB) 与apk签名
  3. java回调如何理解_如何理解java中的回调
  4. android RSA加密
  5. 产品报价单模板_一文说透报价单,这么做才是专业!附模板及注意事项
  6. 无监督学习 k-means_无监督学习-第1部分
  7. set_error_handler() 重要用法
  8. jQuery使用示例详解
  9. FragmentTransactionExtended
  10. linux卸载apache服务器,centos 7 安装卸载apache(httpd)服务的详细步骤
  11. python中rect函数_Rect和RectF函数
  12. 【python小练习】彩票系列-七乐彩
  13. 二进制转化成ascll_怎样将二进制转ascii码
  14. 【转】解决shiro的Principal属性动态修改无效问题
  15. 学生管理系统的mysql数据库设计_MySQL数据库--学生管理系统数据库设计
  16. 小程序自定义导航栏组件
  17. mysqlin会使用索引吗
  18. 教师资格证查询找不到服务器怎么办,教师资格证成绩查询页面打不开怎么办?...
  19. Redis中的连接池以及在Springboot中的使用
  20. dell灵越7370 U盘装机 BIOS设置

热门文章

  1. mongodb服务部署
  2. Mysql基本用法-01
  3. python实现dns欺骗_DNS欺骗攻击
  4. psql where里有自定义函数慢_使用gplearn自定义特征自动生成模块
  5. java set的first_Java TreeSet pollFirst()方法与示例
  6. cfa英语不好的怎么学_英语不好,如何备考CFA?
  7. 两点(51nod 深搜)
  8. oracle opaque_transform,oracle databse link
  9. xshell连接服务器响应慢,Xshell 连接虚拟机很慢
  10. 欣赏多彩的计算机作品教案,五年级上信息技术教案-欣赏多彩的计算机作品长春版(三起).docx...