一、Opencv中的核函数定义(4种):

1、CvSVM::LINEAR : 线性内核,没有任何向映射至高维空间,线性区分(或回归)在原始特点空间中被完成,这是最快的选择。

2、CvSVM::POLY : 多项式内核:

3、CvSVM::RBF : 基于径向的函数,对于大多半景象都是一个较好的选择:

4、CvSVM::SIGMOID : Sigmoid函数内核:

二、svm_type:指定SVM的类型(5种):

1、CvSVM::C_SVC : C类支撑向量分类机。 n类分组 (n≥2),容许用异常值处罚因子C进行不完全分类。

2、CvSVM::NU_SVC : 类支撑向量分类机。n类似然不完全分类的分类器。参数为庖代C(其值在区间【0,1】中,nu越大,决定计划鸿沟越腻滑)。

3、CvSVM::ONE_CLASS : 单分类器,所有的练习数据提取自同一个类里,然后SVM建树了一个分界线以分别该类在特点空间中所占区域和其它类在特点空间中所占区域。

4、CvSVM::EPS_SVR : 类支撑向量回归机。练习集中的特点向量和拟合出来的超平面的间隔须要小于p。异常值处罚因子C被采取。

5、CvSVM::NU_SVR : 类支撑向量回归机。 庖代了 p

1 #include <cv. 2 #include <highgui.h>  

  1. #include <ml.h>
  2. #include <cxcore.h>
  3. #include <iostream>
  4. using namespace std;
  5. int main()
  6. {
  7. // step 1:
  8. //训练数据的分类标记,即4类
  9. float labels[] = { 1.0, 1.0, 1.0, 1.0, 2.0, 2.0, 2.0, 2.0, 3.0, 3.0, 3.0, 3.0, 4.0, 4.0, 4.0, 4.0 };
  10. CvMat labelsMat = cvMat(, , CV_32FC1, labels);
  11. //训练数据矩阵
  12. float trainingData[][] = { { , }, { , }, { , }, { -, }, { , }, { -, }, { , }, { , }, { , }, { , }, { , }, { , }, { , }, { , }, { , }, { , - } };
  13. CvMat trainingDataMat = cvMat(, , CV_32FC1, trainingData);
  14. // step 2:
  15. //训练参数设定
  16. CvSVMParams params;
  17. params.svm_type = CvSVM::C_SVC; //SVM类型
  18. params.kernel_type = CvSVM::LINEAR; //核函数的类型
  19. //SVM训练过程的终止条件, max_iter:最大迭代次数 epsilon:结果的精确性
  20. params.term_crit = cvTermCriteria(CV_TERMCRIT_ITER, , FLT_EPSILON);
  21. // step 3:
  22. //启动训练过程
  23. CvSVM SVM;
  24. SVM.train(&trainingDataMat, &labelsMat, NULL, NULL, params);
  25. // step 4:
  26. //使用训练所得模型对新样本进行分类测试
  27. for (int i = -; i<; i++)
  28. {
  29. for (int j = -; j<; j++)
  30. {
  31. float a[] = { i, j };
  32. CvMat sampleMat;
  33. cvInitMatHeader(&sampleMat, , , CV_32FC1, a);
  34. cvmSet(&sampleMat, , , i); // Set M(i,j)
  35. cvmSet(&sampleMat, , , j); // Set M(i,j)
  36. float response = SVM.predict(&sampleMat);
  37. cout << response << " ";
  38. }
  39. cout << endl;
  40. }
  41. // step 5:
  42. //获取支持向量
  43. int c = SVM.get_support_vector_count();
  44. cout << endl;
  45. for (int i = ; i<c; i++)
  46. {
  47. const float* v = SVM.get_support_vector(i);
  48. cout << *v << " ";
  49. }
  50. cout << endl;
  51. system("pause");
  52. return ;
  53. }
    三、InitMatHeader初始化矩阵头

CvMat* cvInitMatHeader( CvMat* mat, int rows, int cols, int type,void* data=NULL, int step=CV_AUTOSTEP );

  1. mat
        指针指向要被初始化的矩阵头. 
    rows
        矩阵的行数. 
    cols
        矩阵的列数. 
    type
        矩阵元素类型. 
    data
        可选的,将指向数据指针分配给矩阵头. 
    step
        排列后的数据的整个行宽,默认状态下,使用STEP的最小可能值。也就是说默认情况下假定矩阵的行与行之间无隙.

函数 cvInitMatHeader 初始化已经分配了的 CvMat 结构. 它可以被OpenCV矩阵函数用于处理原始数据。

  1.  

例如, 下面的代码计算通用数组格式存贮的数据的矩阵乘积.

  1.  

计算两个矩阵的积

  1.  

double a[] = { 1, 2, 3, 4,
               5, 6, 7, 8,
               9, 10, 11, 12 };

  1.  

double b[] = { 1, 5, 9,
               2, 6, 10,
               3, 7, 11,
               4, 8, 12 };

  1.  

double c[9];
CvMat Ma, Mb, Mc ;

  1.  

cvInitMatHeader( &Ma, 3, 4, CV_64FC1, a );
cvInitMatHeader( &Mb, 4, 3, CV_64FC1, b );
cvInitMatHeader( &Mc, 3, 3, CV_64FC1, c );

  1.  

cvMatMulAdd( &Ma, &Mb, 0, &Mc );
// c 数组存贮 a(3x4) 和 b(4x3) 矩阵的积

  1.  
  1.  
  1.  

SVM参数解析的更多相关文章

  1. 写个C#命令行参数解析的小工具

    最近测试工作做的比较多因此时常要创建一些控制台类型的应用程序.因为程序有不同的参数开关,需要在程序启动的时候通过命令行来给程序传递各种开关和参数.直接操作args有些不方便,所以就写了个解析参数的小工 ...

  2. Python--命令行参数解析Demo

    写没有操作界面的程序时,最讨厌的就是参数解析问题,尤其是很多参数那种,下面是一个小Demo,拿出来与各位分享: # -*- coding:utf8 -*- import os import datet ...

  3. Node基础:url查询参数解析之querystring

    模块概述 在nodejs中,提供了querystring这个模块,用来做url查询参数的解析,使用非常简单. 模块总共有四个方法,绝大部分时,我们只会用到 .parse(). .stringify() ...

  4. paper 36 :[教程] 基于GridSearch的svm参数寻优

    尊重原创~~~ 转载出处:http://www.matlabsky.com/thread-12411-1-1.html 交叉验证(Cross Validation)方法思想简介http://www.m ...

  5. Zookeeper + Hadoop2.6 集群HA + spark1.6完整搭建与所有参数解析

    废话就不多说了,直接开始啦~ 安装环境变量: 使用linx下的解压软件,解压找到里面的install 或者 ls 运行这个进行安装 yum install gcc yum install gcc-c+ ...

  6. argparse - 命令行选项与参数解析(转)

    argparse - 命令行选项与参数解析(译)Mar 30, 2013 原文:argparse – Command line option and argument parsing 译者:young ...

  7. 一步一步自定义SpringMVC参数解析器

    随心所欲,自定义参数解析器绑定数据. 题图:from Zoommy 干货 SpringMVC解析器用于解析request请求参数并绑定数据到Controller的入参上. 自定义一个参数解析器需要实现 ...

  8. /proc/sys/ 下内核参数解析

    http://blog.itpub.net/15480802/viewspace-753819/ http://blog.itpub.net/15480802/viewspace-753757/ ht ...

  9. ThreadPoolExecutor参数解析

    ThreadPoolExecutor是一个非常重要的类,用来构建带有线程池的任务执行器,通过配置不同的参数来构造具有不同规格线程池的任务执行器. 写在前面的是: 线程池和任务执行器,线程池的定义比较直 ...

随机推荐

  1. Python之网络编程(Socket)

    1.网络通信原理与互联网协议 详见:https://www.cnblogs.com/JackLi07/p/9218039.html 2.socket层 以上是tcp/ip五层协议的结构图,我们没有看到 ...

  2. mongo数据库的安装与使用

    下载mongoDB安装包.https://pan.baidu.com/s/1cvSJtc 默认安装.会在系统盘的program Files文件夹下法相一个MongoDB的文件夹,这个就是软件安装的位置 ...

  3. SVG 学习<三>渐变

    目录 SVG 学习<一>基础图形及线段 SVG 学习<二>进阶 SVG世界,视野,视窗 stroke属性 svg分组 SVG 学习<三>渐变 SVG 学习<四 ...

  4. Debug版本正常运行,Release版本编译通过但运行崩溃

    解决这个问题之前,第一个想的是Debug版本和Release版本有什么区别 Debug版: 经过编译器编译出的项目.exe文件大,而且生成的二进制命令没有经过编译器的优化.项目中包含着丰富的调试信息, ...

  5. File Input Features

    文件输入功能 1.该插件将将一个简单的 HTML 文件输入转换为高级文件选取器控件.将有助于对不支持 JQuery 或 Javascript 的浏览器的正常 HTML 文件输入进行回退. 2.文件输入 ...

  6. wmware虚拟机的克隆

    VMware 支持两种类型的克隆:完整克隆 链接克隆 完整克隆是和原始虚拟机完全独立的一个拷贝,它不和原始虚拟机共享任何资源.可以脱离原始虚拟机独立使用. 链接克隆需要和原始虚拟机共享同一虚拟磁盘文件 ...

  7. iOS获取当前路由信息

    导入头文件: #import <SystemConfiguration/CaptiveNetwork.h> - (void)currentWifiSSID {    // Does not ...

  8. iPhone may be running a version of iOS that is not supported by this version of Xcode

    Xcode6.0.1对ios8.1真机不识别,升级Xcode6.0.1为Xcode6.1,就行了.也可以,降低手机版本为以前的版本,想要降低手机版本请看我的另一片博客<iphone手机版本降级& ...

  9. Linux系统Oracle启动、关闭

    Linux系统启动Oracle命令 su - oracle sqlplus /nolog conn / as sysdba startup exit lsnrctl start exit Linux系 ...

  10. oozie 工作流调试及报错

    1.  oozie 调用sql文件的workflow 错误汇总: 1)hive2server密码错误.(有时设置可以无密码,有时需要登陆密码,有时是单独的hive2server密码) Connecti ...