LIBSVM的结构分析
来源:互联网 发布:手机淘宝怎么发布零食 编辑:程序博客网 时间:2024/05/29 15:48
首先,我们调用的是svm-train.c这个文件进行训练,在visual studio下对应加载svm.h,svm.cpp,svm-train.c三个文件。编译为svm-train.exe可执行文件然后在命令行执行训练过程。
关于svm.h,是定义的一个头文件。其中定义的是svm需要的输入参数以及最后输出的模型,和一些函数。以供svm.h和svm-train.c文件中调用。
关于svm-train.c,我们首先找到主函数int main(int argc,char **argv)。这两个输入代表数据集和svm参数。数据集格式可以参照libsvm自带数据集格式,参数格式也一样。
关于读取数据,分为两个部分,第一个部分是读取命令行输入,也就是parse_command_line,把输入的训练集和svm参数分别保存到两个data里面。然后read_problem调用训练集数据,把每行数据都按照svm.h中定义的结构体保存下来。
下面是判断参数里面是否含有交叉验证这一参数。如果有,则进行交叉验证(默认是一折交叉验证)。然后调用svm_goup_classes分类。之后进行训练svm_train。如果不进行交叉验证的话,那么就直接执行svm_train。该函数也在svm.cpp中重写。
关于分类,众所周知,svm有回归和分类,回归也是一种分类。这里把回归和一分类问题归为一类,多分类问题为另一类。下面只描述多分类问题。回归和一分类问题也类似。
Svm_group_classes,该函数实现的目的是把数据集依照类别进行划分。Nr_class就是类别的个数,比如手写识别案例就是nr_class=10,因为十个数字。分好类以后采用one-to-one的训练方式。两个for循环遍历nr_class,每一类都和其他所有类进行一次最优超平面的划分。最后综合投票决定划分。
在svm_train_one中以C_SVC为列。s.Solve是SVM的SMO算法主体。关于算法主体就不在描述。
0 0
- LIBSVM的结构分析
- libSVM源码分析
- libsvm 代码分析
- libsvm源码分析
- libSVM源码分析
- libsvm代码阅读:关于Cache类的分析
- LibSVM 3.12的源码分析Svm-train.c
- 如何转成libsvm支持的数据格式并做回归分析
- libsvm相关变量总结以及libsvm 参数粗调、微调技巧 和PCA主成分分析princomp函数的使用
- Libsvm学习-3 Libsvm的使用说明
- 分析rwlock的结构
- sync4J的结构分析
- 现金流量的结构分析
- IplImage的结构分析
- 网页的结构分析
- 循环结构的分析
- libsvm的使用流程
- libsvm的FQA
- UITableView中的cell重用(原理)以及cell重用解决办法
- Tkinter -- Grid布局
- python+webdriver+autoit实现百度云盘文件上传
- 海量数据面试题----分而治之/hash映射 + hash统计 + 堆/快速/归并排序
- POJ 2139——Six Degrees of Cowvin Bacon 最短路径
- LIBSVM的结构分析
- VB与flash交互
- 求n的阶乘以及前n个数的阶乘和
- apache-tomcat-8.0.32 + jdk1.8.0_65 的环境配置
- 详解并行逻辑回归
- Storm-源码分析汇总
- Android热补丁技术—dexposed原理简析(阿里Hao)
- 读书笔记| (一)ARM9 嵌入式学习:基础篇
- 线程通信