Matlab版LibSVM定义线性核和高斯核的使用方法

(1)如何采用线性核? matlab> % Linear Kernel matlab> model_linear = svmtrain(train_label, train_data, ‘-t 0′);  严格讲,线性核也要像高斯核一样调整c这个参数,Libing wang讲一般C=1效果比较好,可能调整效果差异不大,当然要看具体的数据集。c大,从SVM目标函数可以看出,c越大,相当于惩罚松弛变量,希望松弛变量接近0,即都趋向于对训练集全分对的情况,这样对训练集测试时准确率很高,但推广能力未必好,即在测试集上未必好。c小点,相当于边界的有些点容许分错,将他们当成噪声点,这样外推能力比较好。 (2)如何采用高斯核? matlab> load heart_scale.mat matlab> model = svmtrain(heart_scale_label, heart_scale_inst, ‘-c 1 -g 0.07′); 参考:http://www.cppblog.com/guijie/archive/2012/03/26/169034.html

LibSVM 3.12的源码分析Svm-train.c

共涉及3个文件: Svm-train.c, Svm.cpp, Svm.h. 建议使用Source Insight软件对这3个文件建立工程. 方便代码阅读. 下面从Svm-train.c文件中的main()函数切入. int main(int argc, char **argv) { char input_file_name[1024]; //训练样本文件名 char model_file_name[1024]; //输出模型的文件名 const char *error_msg; parse_command_line(argc, argv, input_file_name, model_file_name); //解析运行程序时,命令行输入的参数 read_problem(input_file_name); //读入训练样本,存入到struct svm_problem prob结构体中 error_msg = svm_check_parameter(&prob,&param); //检查训练样本数据格式是否正确 if(error_msg) { fprintf(stderr,“ERROR: %s\n”,error_msg); … 继续阅读

libsvm的使用

1: 了解libsvm工具包 LIBSVM是台湾大学林智仁(Lin Chih-Jen)教授等2001年开发设计的一个简单, 易于使用和快速有效的SVM模式识别与回归的软件包, 他不但提供了编译好的可在Windows系列系统的执行文件, 还提供了源代码, 方便改进, 修改以及在其它操作系统上应用; 该软件对SVM所涉及的参数调节相对比较少, 提供了很多的默认参数, 利用这些默认参数可以解决很多问题; 并提供了交互检验(Cross Validation)的功能. 该软件包可在http://www.csie.ntu.edu.tw/~cjlin/ 免费获得. 该软件可以解决C-SVM, ν-SVM, ε-SVR和ν-SVR等问题, 包括基于一对一算法的多类模式识别问题. 这套库可以从http://www.csie.ntu.edu.tw/~cjlin/libsvm/index.html免费获得, 目前已经发展到3.12版(2012.4.1更新).下载.tar.gz格式的版本, Windows下也可以直接解压, 主要有6个文件夹和一些源码文件. Java: 主要是应用于java平台; matlab: windows下64位matlab平台; python: 是用来参数优选的工具, 稍后介绍; svm-toy: 一个可视化的工具, 用来展示训练数据和分类界面, 里面是源码, 其编译后的程序在windows文件夹下; tools: 主要包含四个python文件, 用来数据集抽样(subset), 参数优选(grid), … 继续阅读