对svmtrain函数的输入参数和返回值进行说明

1. 训练

libsvm函数用于对训练集的数据进行训练,得到训练好的模型。

model = libsvmtrain(training_label_vector, training_instance_matrix ['libsvm_options']);

这个函数有三个参数,其中

-training_label_vector:训练样本的类标,如果有m个样本,就是m x 1的矩阵(类型必须为double)。这里可以是二分类和多分类,类标是(-1,1)、(1,2,3)或者其他任意用来表示不同的类别的数字,要转成double类型。 
-training_instance_matrix:训练样本的特征,如果有m个样本,每个样本特征是n维,则为m x n的矩阵(类型必须为double)。当使用precomputed核时,[training_instance_matrix]由两部分组成,第一列为长度m,从1-m的序号,第二列之后是训练样本核。例如:

model = svmtrain(trainlabel, ... #训练样本的标签
            [(1 : size(trainfeat, 1))', trainfeat], ... #训练样本
            '-t 4 -q'); #参数
-libsvm_options:训练的参数,在第3点详细介绍。

2. 预测

libpredict函数用于对测试集的数据进行测试,还能对未知样本进行预测。

[predicted_label, accuracy, decision_values/prob_estimates] 
    = libsvmpredict(testing_label_vector, testing_instance_matrix, model ['libsvm_options']);

这个函数包括四个参数,其中

-testing_label_vector:测试样本的类标,如果有m个样本,就是m x 1的矩阵(类型必须为double)。如果类标未知,可以初始化为任意m x 1的double数组。 
-testing_instance_matrix:测试样本的特征,如果有m个样本,每个样本特征是n维,则为m x n的矩阵(类型必须为double)。 
-model:使用libsvmtrain返回的模型 
-libsvm_options:预测的参数,与训练的参数形式一样。

3. 训练的参数

LIBSVM训练时可以选择的参数很多,包括:

-s svm类型:SVM设置类型(默认0)
    0 — C-SVC; 1 –v-SVC; 2 – 一类SVM; 3 — e-SVR; 4 — v-SVR
-t 核函数类型:核函数设置类型(默认2)
    0 – 线性核函数:u’v 
    1 – 多项式核函数:(r*u’v + coef0)^degree
    2 – RBF(径向基)核函数:exp(-r|u-v|^2)
    3 – sigmoid核函数:tanh(r*u’v + coef0)
-d degree:核函数中的degree设置(针对多项式核函数)(默认3)
-g r(gamma):核函数中的gamma函数设置(针对多项式/rbf/sigmoid核函数)(默认1/k,k为总类别数)
-r coef0:核函数中的coef0设置(针对多项式/sigmoid核函数)((默认0)
-c cost:设置C-SVC,e -SVR和v-SVR的参数(损失函数)(默认1)
-n nu:设置v-SVC,一类SVM和v- SVR的参数(默认0.5)
-p p:设置e -SVR 中损失函数p的值(默认0.1)
-m cachesize:设置cache内存大小,以MB为单位(默认40)
-e eps:设置允许的终止判据(默认0.001)
-h shrinking:是否使用启发式,0或1(默认1)
-wi weight:设置第几类的参数C为weight*C (C-SVC中的C) (默认1)
-v n: n-fold交互检验模式,n为fold的个数,必须大于等于2

以上这些参数设置可以按照SVM的类型和核函数所支持的参数进行任意组合,如果设置的参数在函数或SVM类型中没有也不会产生影响,程序不会接受该参数;如果应有的参数设置不正确,参数将采用默认值。

4. 训练返回的内容

libsvmtrain函数返回训练好的SVM分类器模型,可以用来对未知的样本进行预测。这个模型是一个结构体,包含以下成员:

-Parameters: 一个5 x 1的矩阵,从上到下依次表示:
    -s SVM类型(默认0);
    -t 核函数类型(默认2)
    -d 核函数中的degree设置(针对多项式核函数)(默认3);
    -g 核函数中的r(gamma)函数设置(针对多项式/rbf/sigmoid核函数) (默认类别数目的倒数);
    -r 核函数中的coef0设置(针对多项式/sigmoid核函数)((默认0)
-nr_class: 表示数据集中有多少类别,比如二分类时这个值即为2。
-totalSV: 表示支持向量的总数。
-rho: 决策函数wx+b中的常数项的相反数(-b)。
-Label: 表示数据集中类别的标签,比如二分类常见的1和-1。
-ProbA: 使用-b参数时用于概率估计的数值,否则为空。
-ProbB: 使用-b参数时用于概率估计的数值,否则为空。
-nSV: 表示每类样本的支持向量的数目,和Label的类别标签对应。如Label=[1; -1],nSV=[63; 67],则标签为1的样本有63个支持向量,标签为-1的有67个。
-sv_coef: 表示每个支持向量在决策函数中的系数。
-SVs: 表示所有的支持向量,如果特征是n维的,支持向量一共有m个,则为m x n的稀疏矩阵。

另外,如果在训练中使用了-v参数进行交叉验证时,返回的不是一个模型,而是交叉验证的分类的正确率或者回归的均方根误差。

5. 预测返回的内容

libsvmtrain函数有三个返回值,不需要的值在Matlab可以用~进行代替。

-predicted_label:第一个返回值,表示样本的预测类标号。 
-accuracy:第二个返回值,一个3 x 1的数组,表示分类的正确率、回归的均方根误差、回归的平方相关系数。注意:当使用预训练核时,并不能取accuracy(1,1)作为分类结果,应该取:mean(predicted_label==testlabel) 
-decision_values/prob_estimates:第三个返回值,一个矩阵包含决策的值或者概率估计。对于n个预测样本、k类的问题,如果指定“-b 1”参数,则n x k的矩阵,每一行表示这个样本分别属于每一个类别的概率;如果没有指定“-b 1”参数,则为n x k*(k-1)/2的矩阵,每一行表示k(k-1)/2个二分类SVM的预测结果。

libsvmpredict和svmtrain的参数和返回值相关推荐

  1. libsvm中svmtrain的参数和返回值

    对svmtrain函数的输入参数和返回值进行说明 1. 训练 libsvm函数用于对训练集的数据进行训练,得到训练好的模型. model = libsvmtrain(training_label_ve ...

  2. Go 学习笔记(61)— Go 高阶函数、函数作为一等公民(函数作为输入参数、返回值、变量)的写法

    函数在 Go 语言中属于"一等公民(First-Class Citizen)"拥有"一等公民"待遇的语法元素可以如下使用 可以存储在变量中: 可以作为参数传递给 ...

  3. EntityCURD操作的参数和返回值

    以下是netbeans根据实体自动生成的CURD模板: /** To change this template, choose Tools | Templates* and open the temp ...

  4. php 函数返回值mixed,认识函数的类型、参数与返回值

    函数的类型.参数与返回值 一.函数的基本语法语法 functionfunctionName(类型限定参数列表):返回值类型 { } 案例:计算两个数之和. functionsum(int$a,int$ ...

  5. C#使用ExecuteReader返回DataReader既有查询结果集又有输出参数或返回值的使用注意事项...

    Command 对象公开了几个可用于执行所需操作的 Execute 方法.当以数据流的形式返回结果时,使用 ExecuteReader 可返回 DataReader 对象.使用 ExecuteScal ...

  6. 反射 -- 业务需求:执行某个类中全部的以test为开头的无参数无返回值的非静态方法。...

    package demo; //业务需求:执行某个类中全部的以test为开头的无参数无返回值的非静态方法. import java.lang.reflect.Method; import java.u ...

  7. 【C++】函数 指针类型参数 与 引用类型参数 对比 ( 修改外部变量需要传入的参数要求 | 参数作返回值 )

    文章目录 I . 博客总结 . 指针与引用类型参数 II . 指针作为参数和返回值 III . 引用参数简介 IV . 引用作为参数和返回值 I . 博客总结 . 指针与引用类型参数 1 . 讨论问题 ...

  8. AOP开发——在不修改源代码的前提下,对类里面的方法进行增强 : 前置 后置 环绕 异常||如何得到目标方法的参数和返回值

    AOP开发 @Transactionl 在不修改源代码的前提下,对类里面的方法进行增强 前置 后置 环绕 异常 创建项目前引入aop的包 <dependency>     <grou ...

  9. Python基础学习----参数和返回值

    # 函数的参数和返回值 # 4种组合方式 # 1.无参无返 # def methodone(): # 2.无参有返 def methodtwo():a=10return a # 3.有参无返 # de ...

最新文章

  1. 【青少年编程竞赛交流】11月份微信图文索引
  2. JSON WEB TOKEN(JWT)的分析
  3. mybatis-批量更新
  4. 七月老师python_七月在线Python学习笔记
  5. 用C#把文件转换为XML
  6. RecyclerView 判断滑到底部 顶部 预加载 更多 分页 MD
  7. c语言程序设计实践教程课后题,《C语言程序设计实践教程》答案-完整版.doc
  8. python好友管理系统
  9. C# 中Session的用法
  10. 马斯克血洗推特!传机器学习裁员90%,团队直接解散
  11. 序列解包(for x,y in zip(keys, values):)详解。
  12. 联想 计算机无线网络设置方法,联想笔记本无线网络开关,教您联想笔记本无线网络开关...
  13. matlab 质心,Matlab中三点确定质心
  14. python修改图片大小为30kb_关于python:生成小于10KB且未丢失比例的图像缩略图
  15. 剑网3服务器一直显示维护,8月3日例行维护完毕 服务器已正常开启
  16. 北京高校应届生就业招聘信息网址
  17. 保研推免全过程_从深大到中科院
  18. flex bison 基础概述
  19. 一亿现金和清华录取通知书,你选哪个?
  20. 计算机工程与应用论文发表,计算机工程与应用论文模板(范文).doc

热门文章

  1. 【干货】OJ上各种术语
  2. linux内核的原子操作简述
  3. 2022-2028年中国代餐轻食市场投资分析及前景预测报告
  4. ajax请求是宏任务还是微任务_好程序员web前端学习路线分享了解AJAX是什么
  5. 最长公共子序列问题-----题目
  6. 【演讲实录+视频】走近40+世界级AI专家!第三届中国人工智能大会资料分享(直播进行中_不断更新)
  7. 冯 诺依曼体系结构是现代计算机的基础,作为现代计算机基本结构的冯·诺依曼体系包括______。...
  8. VPP DPDK,不是翻墙!!
  9. C++ Google代码风格
  10. Java各种数据类型互转