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

SVM学习笔记(1)LIBSVM在matlab下的使用安装

1) 从LIBSVM的官网http://www.csie.ntu.edu.tw/~cjlin/libsvm/上下载最新版本的LIBSVM,当前版本为libsvm-3.16.zip

2) 解压压缩包到电脑上一位置,如:C:\Program Files\libsvm-3.16

3) 假设你使用的是64位的操作系统和matlab。此时将libsvm-3.16文件夹下的windows目录添加到matlab目录中。即在matlab目录中添加:C:\ProgramFiles\libsvm-3.16\windows。因为windows下包含了matlab可执行的二进制文件libsvmread.mexw64/libsvmwrite.mexw64/svmpredict.mexw64/svmtrain.mexw64

4) 假设你使用的是32位操作系统和matlab,则需要自己编译相应的二进制文件。

在matlab命令窗口输入

>>mex –setup

这时matlab会提示你选择编译mex文件的c/c++编译器。

选择一个你电脑上安装的c/c++编译器,例如Microsoft Visual C++ 2010

将matlab当前目录设置为:cd ‘C:\Program Files\libsvm-3.16\matlab’

输入命令make

这时你会看到当前目录生成了二进制文件libsvmread.mexw32/libsvmwrite.mexw32/svmpredict.mexw32/svmtrain.mexw32。将当前目录添加到matlab路径中即可。

5) 例子一个测试

注意到libsvm-3.16下有一个数据文件,名称为heart_scale。这是一个libsvm格式的数据文件。可使用libsvmread函数将其转化为matlab格式。

可使用以下代码测试:

[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

6) svmtrain函数相关参数说明

svmtrain函数返回的model可以用来对测试数据集进行预测。这是一个结构体变量,主要包括了以下几个域。[Parameters, nr_class, totalSV, rho, Label, ProbA, ProbB, nSV,sv_coef, SVs]。英文说明如下:

       -Parameters: parameters

       -nr_class: number of classes; = 2 for regression/one-class svm

       -totalSV: total #SV

       -rho: -b of the decision function(s) wx+b

       -Label: label of each class; empty for regression/one-class SVM

       -ProbA: pairwise probability information; empty if -b 0 or in one-classSVM

       -ProbB: pairwise probability information; empty if -b 0 or in one-classSVM

       -nSV: number of SVs for each class; empty for regression/one-class SVM

       -sv_coef: coefficients for SVs in decision functions

       -SVs: support vectors

如果没有指定’-b 1’选项则ProbA和ProbB为空矩阵。此外,当指定’-v’选项时,返回的model是一个数值,是cross-validation的准确率。

其中model.paramter是一个5X1的向量,参数意义为:

model.Parameters参数意义从上到下依次为:

-s svm类型:SVM设置类型(默认0)

-t 核函数类型:核函数设置类型(默认2)

-d degree:核函数中的degree设置(针对多项式核函数)(默认3)

-g r(gama):核函数中的gamma函数设置(针对多项式/rbf/sigmoid核函数) (默认类别数目的倒数)

-r coef0:核函数中的coef0设置(针对多项式/sigmoid核函数)((默认0)

7)svmpredict函数参数说明

svmpredict函数返回三个值,predict_label,是训练集预测得到的label向量。第二个输出是accuracy,是一个3维的向量,从上到下分别是:分类准率(分类问题中用到的参数指标);平均平方误差(MSE (mean squared error)) (回归问题中用到的参数指标);平方相关系数(r2 (squared correlation coefficient))(回归问题中用到的参数指标)。第三个输出是个矩阵,包含着决策值或者是概率估计(当’-b 1’被指定时)。当训练数据有k类时,决策值矩阵是一个n行k*(k-1)/2列的矩阵(n为测试数据集个数,k为类别数),而每一行的输出是k*(k-1)/2个二分类器的结果。当’-b 1’被指定时,概率估计矩阵是一个n行k类的矩阵(n为测试数据集个数,k为类别数),每一行的输出是该测试数据属于每个类的概率。

相关文章:

  • SVM学习笔记(2)LIBSVM在python下的使用
  • SVM学习笔记(3)LIBSVM中的核函数及其参数
  • C++一个完整的类实例及其调用
  • LaTeX算法排版例子
  • 高斯卷积
  • Matlab PCA 算法
  • Matlab排序函数
  • Matlab取整函数
  • Matlab图像直方图相关函数
  • Matlab中find函数的使用说明
  • Matlab中arrayfun函数
  • Matlab数形结合求解不等式
  • Matlab中的fzero和fsolve函数
  • Matlab 如何用legend标记部分曲线
  • Matlab中绘制带箭头的坐标轴
  • 分享一款快速APP功能测试工具
  • Django 博客开发教程 16 - 统计文章阅读量
  • Github访问慢解决办法
  • Java,console输出实时的转向GUI textbox
  • Java编程基础24——递归练习
  • pdf文件如何在线转换为jpg图片
  • Spark RDD学习: aggregate函数
  • vue数据传递--我有特殊的实现技巧
  • 安装python包到指定虚拟环境
  • 排序算法学习笔记
  • 漂亮刷新控件-iOS
  • 如何在 Tornado 中实现 Middleware
  • 使用 5W1H 写出高可读的 Git Commit Message
  • 无服务器化是企业 IT 架构的未来吗?
  • 小程序、APP Store 需要的 SSL 证书是个什么东西?
  • 《码出高效》学习笔记与书中错误记录
  • ionic异常记录
  • 通过调用文摘列表API获取文摘
  • # 睡眠3秒_床上这样睡觉的人,睡眠质量多半不好
  • #14vue3生成表单并跳转到外部地址的方式
  • #我与Java虚拟机的故事#连载01:人在JVM,身不由己
  • %@ page import=%的用法
  • (4)事件处理——(2)在页面加载的时候执行任务(Performing tasks on page load)...
  • (C#)if (this == null)?你在逗我,this 怎么可能为 null!用 IL 编译和反编译看穿一切
  • (Matalb回归预测)PSO-BP粒子群算法优化BP神经网络的多维回归预测
  • (TipsTricks)用客户端模板精简JavaScript代码
  • (第8天)保姆级 PL/SQL Developer 安装与配置
  • (三)模仿学习-Action数据的模仿
  • (删)Java线程同步实现一:synchronzied和wait()/notify()
  • (转)EOS中账户、钱包和密钥的关系
  • (转)shell调试方法
  • .gitignore文件忽略的内容不生效问题解决
  • .libPaths()设置包加载目录
  • .NET Core WebAPI中使用Log4net 日志级别分类并记录到数据库
  • .NET Framework 3.5中序列化成JSON数据及JSON数据的反序列化,以及jQuery的调用JSON
  • .net mvc 获取url中controller和action
  • .NET 设计一套高性能的弱事件机制
  • .Net调用Java编写的WebServices返回值为Null的解决方法(SoapUI工具测试有返回值)
  • .Net中ListT 泛型转成DataTable、DataSet
  • /使用匿名内部类来复写Handler当中的handlerMessage()方法