一、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>  

 #include <ml.h>
#include <cxcore.h> #include <iostream>
using namespace std; int main()
{
// step 1:
//训练数据的分类标记,即4类
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 };
CvMat labelsMat = cvMat(, , CV_32FC1, labels);
//训练数据矩阵
float trainingData[][] = { { , }, { , }, { , }, { -, }, { , }, { -, }, { , }, { , }, { , }, { , }, { , }, { , }, { , }, { , }, { , }, { , - } };
CvMat trainingDataMat = cvMat(, , CV_32FC1, trainingData); // step 2:
//训练参数设定
CvSVMParams params;
params.svm_type = CvSVM::C_SVC; //SVM类型
params.kernel_type = CvSVM::LINEAR; //核函数的类型 //SVM训练过程的终止条件, max_iter:最大迭代次数 epsilon:结果的精确性
params.term_crit = cvTermCriteria(CV_TERMCRIT_ITER, , FLT_EPSILON); // step 3:
//启动训练过程
CvSVM SVM;
SVM.train(&trainingDataMat, &labelsMat, NULL, NULL, params); // step 4:
//使用训练所得模型对新样本进行分类测试
for (int i = -; i<; i++)
{
for (int j = -; j<; j++)
{
float a[] = { i, j };
CvMat sampleMat;
cvInitMatHeader(&sampleMat, , , CV_32FC1, a);
cvmSet(&sampleMat, , , i); // Set M(i,j)
cvmSet(&sampleMat, , , j); // Set M(i,j)
float response = SVM.predict(&sampleMat);
cout << response << " ";
}
cout << endl;
} // step 5:
//获取支持向量
int c = SVM.get_support_vector_count();
cout << endl;
for (int i = ; i<c; i++)
{
const float* v = SVM.get_support_vector(i);
cout << *v << " ";
}
cout << endl; system("pause");
return ;
}
三、InitMatHeader初始化矩阵头

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

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

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


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


计算两个矩阵的积


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


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


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


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


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

 
 
 

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. canvas实现刮刮乐

    效果展示 源码下载

  2. python- do_excel

    # @File : class_01_do_excel.py # coding=gbk #pip install openpyxl #新建.xlsx,一定要右键新建 from openpyxl imp ...

  3. 【Selenium-WebDriver问题篇】Selenium实现元素的拖拽(java版)(转)

    https://blog.csdn.net/u010503127/article/details/51381284 Selenium实现元素的拖拽(java版) [前言] 自从淘宝网登陆页出现滑块验证 ...

  4. 【Selenium-WebDriver自学】Selenium-IDE安装和使用(一)

    ==================================================================================================== ...

  5. php学习笔记1——使用phpStudy进行php运行环境搭建与测试。

    1. 新手第一步还是使用phpStudy搭建一下windows下的php环境,并测试.如下: http://jingyan.baidu.com/article/3c343ff7067eff0d3679 ...

  6. IntelliJ IDEA 编译代码报错 找不到符号 符号: 找不到符号包 包

    在使用IDEA的时候,经常出现过找不到包或者找不到符号的情况,可以尝试以下几种方式来解决 1.如果项目使用的是Maven可以使用Maven-Reimport 2.还可以 Invalidate and ...

  7. 9.Appium使用安装所需软件百度盘链接

    Appium使用安装所需软件大全: 1.抓包工具 Charles : 链接:https://pan.baidu.com/s/1KomTDV2_o1dEDvlimrd5HQ 提取码:5yn2 2.抓包工 ...

  8. [多线程]多线程(Thread、Runnable、Callable)

    1.继承Thread类,重写run方法 线程 是程序中的执行线程.Java 虚拟机允许应用程序并发地运行多个执行线程. 每个线程都有一个优先级,高优先级线程的执行优先于低优先级线程.每个线程都可以或不 ...

  9. rem布局js实现

    (function(designWidth, maxWidth) { var doc = document, win = window; var docEl = doc.documentElement ...

  10. Mysql 索引 n-gram分词引擎使用

    概述: 类似于书籍的目录,找到一本书的特定内容,需要首先找到内容对应页码,定位对应页码 存储引擎使用类似方法进行数据查找,先找到索引中对应值,然后根据匹配的索引找到对应行 实现原理: 索引的实现通常使 ...