LibSVM-28程序代码注释.doc

  1. 1、本文档共32页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
LibSVM-28程序代码注释

LibSVM-2.8程序代码注释 刘国平(ahphone@) 2005-08-6 我不经心地,服下你调好的毒 我知道今后我将万劫不复 但是你的红唇仍让我屈服 四月的樱花火红满天 我和你的梦,却要一以何处去缱绻? 虽然人间的情爱万万千千 世上已有太多崩毁的誓言 七个黑夜,七个白天 我为你写下的歌,彩绘的纸笺 却只能随着晚风 飘在大海的岸边 我仍愿服下你精心为我调好的毒 从你那深情的吻 吞下我与你在人间 最后的流光万千辗转朱颜…… 第一章 LibSVM结构 一、文件结构 整个LibSVM由两个文件组成,svm.h, svm.cpp。其中svm.h中定义了使用LibSVM所需要的数据结构和函数。 数据结构: struct svm_node :数据节点,每个节点只是单个样本矢量中的一个特征。 struct svm_problem :数据集,存放所有样本矢量的数据结构。 struct svm_parameter : SVM参数。 其实应该还有一个数据结构存放在头文件中: struct svm_model : 训练好的训练模型。 二、类结构图 其中有两组关键的类: QMatrix类: 包括QMatrix, Kernel, SVC_Q, SVR_Q, ONE_CLASS_Q; Solver类: 包括Solver, Solver_NU; (矢量图,可以调整放大倍数) 第二章: 头文件SVM.h 本文件只是定义了若干个结构体,和若干接口函数。严格的来说,它们并不是接口函数,因为实际上整个代码里面,可以直接访问的函数还有其他。但事实上,如果仅仅是应用一下这份代码的话,只要知道这几个函数就可以了。2.1 struct svm_node struct svm_node { int index; double value; }; struct svm_node用来存储单一向量中的单个特征,例如: 向量 x1={ 0.002, 0.345, 4, 5.677}; 那么用struct svm_node来存储时就使用一个包含5个svm_node的数组来存储此4维向量,内存映象如下: 1 2 3 4 -1 0.002 0.345 4.000 5.677 空 其中如果value为0.00,该特征将不会被存储,其中(特征3)被跳过: 1 2 4 5 -1 0.002 0.345 4.000 5.677 空 0.00不保留的好处在于,做点乘的时候,可以加快计算速度,对于稀疏矩阵,更能充分体现这种数据结构的优势。但做归一化时,操作就比较麻烦了。(类型转换不再说明) 2.struct svm_problem struct svm_problem { int l; double *y; struct svm_node **x; }; struct svm_problem存储本次参加运算的所有样本(数据集),及其所属类别。在某些数据挖掘实现中,常用DataSet来实现。 int l;记录样本总数 double *y;指向样本所属类别或者回归值的数组。在多类问题中,因为使用了one-agianst-one方法,可能原始样本中y[i]的内容是1.0,2.0,3.0,…,也就是属于类别1,2,3,但但参与多类计算时,参加分类的两类所对应的y[i]内容是+1,和-1。 Struct svm_node **x;指向一个存储内容为指针的数组; 如下图,最右边的四个长条格同上表,存储三维数据。(黑边框的是最主要的部分) 这样的数据结构有一个直接的好处,可以用x[i][j]来访问其中的某一元素(如果value为0.00的也全部保留的话。 私下认为其中有一个败笔,就是把svm_node* x_space放到结构外面去了。 2.enum { 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. A tutorial on support vector machines for pattern recognition. Data Mining and Knowledge Discovery, 2(2):955-974, 1998. NU_SVC :2.4 struct svm_parameter struct svm_parameter { int svm_type;//SVM类型,见前enum int

文档评论(0)

tiangou + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档