LibSVM程序代码注释.docx
上传人:王子****青蛙 上传时间:2024-09-12 格式:DOCX 页数:12 大小:1.2MB 金币:10 举报 版权申诉
预览加载中,请您耐心等待几秒...

LibSVM程序代码注释.docx

LibSVM程序代码注释.docx

预览

免费试读已结束,剩余 2 页请下载文档后查看

10 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

刘国平(ahphone@hotmail.com)2005-08-06我不经心地,服下你调好的毒我知道今后我将万劫不复但是你的红唇仍让我屈服四月的樱花火红满天我和你的梦,却要一以何处去缱绻?虽然人间的情爱万万千千世上已有太多崩毁的誓言七个黑夜,七个白天我为你写下的歌,彩绘的纸笺却只能随着晚风飘在大海的岸边我仍愿服下你精心为我调好的毒从你那深情的吻吞下我与你在人间最后的流光万千辗转朱颜……第一章LibSVM结构一、文件结构整个LibSVM由两个文件组成,,。其中中定义了使用LibSVM所需要的数据结构和函数。数据结构:structsvm_node:数据节点,每个节点只是单个样本矢量中的一个特征。structsvm_problem:数据集,存放所有样本矢量的数据结构。structsvm_parameter:SVM参数。其实应该还有一个数据结构存放在头文件中:structsvm_model:训练好的训练模型。二、类结构图其中有两组关键的类:QMatrix类:包括QMatrix,Kernel,SVC_Q,SVR_Q,ONE_CLASS_Q;Solver类:包括Solver,Solver_NU;(矢量图,可以调整放大倍数)第二章:头文件本文件只是定义了若干个结构体,和若干接口函数。严格的来说,它们并不是接口函数,因为实际上整个代码里面,可以直接访问的函数还有其他。但事实上,如果仅仅是应用一下这份代码的话,只要知道这几个函数就可以了。structsvm_nodestructsvm_node{intindex;doublevalue;};structsvm_node用来存储单一向量中的单个特征,例如:向量x1={0.002,0.345,4,5.677};那么用structsvm_node来存储时就使用一个包含5个svm_node的数组来存储此4维向量,内存映象如下:1234-14.000空其中如果value为0.00,该特征将不会被存储,其中(特征3)被跳过:1245-14.000空0.00不保留的好处在于,做点乘的时候,可以加快计算速度,对于稀疏矩阵,更能充分体现这种数据结构的优势。但做归一化时,操作就比较麻烦了。(类型转换不再说明)2.2structsvm_problemstructsvm_problem{intl;double*y;structsvm_node**x;};structsvm_problem存储本次参加运算的所有样本(数据集),及其所属类别。在某些数据挖掘实现中,常用DataSet来实现。intl;记录样本总数double*y;指向样本所属类别或者回归值的数组。在多类问题中,因为使用了one-agianst-one方法,可能原始样本中y[i]的内容是1.0,2.0,3.0,…,也就是属于类别1,2,3,但但参与多类计算时,参加分类的两类所对应的y[i]内容是+1,和-1。Structsvm_node**x;指向一个存储内容为指针的数组;如下图,最右边的四个长条格同上表,存储三维数据。(黑边框的是最主要的部分)Y[3]Y[2]Y[1]Y[0]L=4Y*X**)。私下认为其中有一个败笔,就是把svm_node*x_space放到结构外面去了。2.3enumsenum{C_SVC,NU_SVC,ONE_CLASS,EPSILON_SVR,NU_SVR};/*svm_type*/enum{LINEAR,POLY,RBF,SIGMOID};/*kernel_type*/支持向量机类型以及若干文献:C-SVC:C.J.C.Burges.Atutorialonsupportvectormachinesforpatternrecognition.DataMiningandKnowledgeDiscovery,2(2):955-974,1998.NU_SVC:(待补充)2.4structsvm_parameterstructsvm_parameter{intsvm_type;//SVM类型,见前enumintkernel_type;//核函数doubledegree;/*forpoly*/doublegamma;/*forpoly/rbf/sigmoid*/doublecoef0;/*forpoly/sigmoid*//*thesearefortrainingonly*/doublecache_size;/*inMB*/doubleeps;/*stoppingcriteria*/doubleC;/*forC_SVC,EPSILON_SVRandNU_SVR*/