libSVM分类小例C++

libSVM分类小例C++

ID:39465312

大小:117.00 KB

页数:7页

时间:2019-07-04

libSVM分类小例C++_第1页
libSVM分类小例C++_第2页
libSVM分类小例C++_第3页
libSVM分类小例C++_第4页
libSVM分类小例C++_第5页
资源描述:

《libSVM分类小例C++》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、使用libSVM求解分类问题的C++小例1.libSVM简介训练模型的结构体structsvm_problem//储存参加计算的所有样本{intl;//记录样本总数double*y;//指向样本类别的组数structsvm_node**x;//数据样本};当样本类别事先已经被告知时,可以通过数字来给样本数据进行标识(如果是两类通常以1与-1来表示)。如果不清楚样本类别可以用样本个数编号来设置,这时候分类的准确率也就无法判定了。数据样本是一个二维数组,其中每个单元格储存的是一个svm_node,y与样本数据的

2、对应关系为:数据节点的结构体structsvm_node//储存单一向量的单个特征{intindex;//索引doublevalue;//值};如果需要储存向量,就可以使用6个svm_node来保存,内存映像为:index12345-1value1121123211211NULL注意:向量是以索引值为-1的元素为结束标志位的。如果没有标志位将导致程序崩溃。SVM模型类型枚举enum{C_SVC,NU_SVC,ONE_CLASS,EPSILON_SVR,NU_SVR};uC_SVC:C表示惩罚因子,C越大表示

3、对错误分类的惩罚越大uNU_SVC:和C_SVC相同。uONE_CLASS:不需要类标号,用于支持向量的密度估计和聚类.uEPSILON_SVR:-不敏感损失函数,对样本点来说,存在着一个不为目标函数提供任何损失值的区域,即-带。uNU_SVR:由于EPSILON_SVR需要事先确定参数,然而在某些情况下选择合适的参数却不是一件容易的事情。而NU_SVR能够自动计算参数。注意:C_SVC与NU_SVC其实采用的模型相同,但是它们的参数C的范围不同C_SVC采用的是0到正无穷,NU_SVC是[0,1]。核函数

4、类型枚举enum{LINEAR,POLY,RBF,SIGMOID,PRECOMPUTED};uLINEAR:线性核函数(linearkernel)uPOLY:多项式核函数(ploynomialkernel)uRBF:径向机核函数(radicalbasisfunction)uSIGMOID:神经元的非线性作用函数核函数(Sigmoidtanh)uPRECOMPUTED:用户自定义核函数计算模型参数结构体structsvm_parameter{intsvm_type;//支持向量机模型类型intkernel_t

5、ype;//核函数类型intdegree;/*使用于POLY模型*/doublegamma;/*forpoly/rbf/sigmoid*/doublecoef0;/*forpoly/sigmoid*//*thesearefortrainingonly*/doublecache_size;/*缓存块大小(MB)*/doubleeps;/*终止条件(默认0.001)*/doubleC;/*惩罚因子forC_SVC,EPSILON_SVRandNU_SVR*/intnr_weight;/*权重的数目forC_SV

6、C*/int*weight_label;/*forC_SVC*/double*weight;/*forC_SVC*/doublenu;/*forNU_SVC,ONE_CLASS,andNU_SVR*/doublep;/*forEPSILON_SVR*/intshrinking;/*指明训练过程是否使用压缩*/intprobability;/*指明是否要做概率估计*/};结构体svm_model用于保存训练后的训练模型,当然原来的训练参数也必须保留。structsvm_model{structsvm_para

7、meterparam;/*训练参数*/intnr_class;/*类别数,=2inregression/oneclasssvm*/intl;/*支持向量数*/structsvm_node**SV;/*支持向量的指针*/double**sv_coef;/*相当于判别函数中的alpha*/double*rho;/*相当于判别函数中的b*/double*probA;/*pariwiseprobabilityinformation*/double*probB;/*forclassificationonly*/int

8、*label;/*labelofeachclass(label[k])*/int*nSV;/*numberofSVsforeachclass(nSV[k])*//*nSV[0]+nSV[1]+...+nSV[k-1]=l*/intfree_sv;/*1ifsvm_modeliscreatedbysvm_load_model*//*0ifsvm_modeliscreatedbysvm_train*/};1.程序代码

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。