最近用LibSVM做分类实验,发现网上的资料大都是关于SVM基本原理和怎么用终端命令行使用svm-train,svm-predict等几个程序,这些其实在README文件中已经讲得很清楚了,Readme里面几乎包含了所有可以帮助你灵活使用LibSVM的信息,可是很多人都不怎么看。这里给出用JAVA调用LibSVM API最简单的示例,用JAVA进行SVM分类只需要几行程序就搞定了,前提是你已经准备好了符合LibSVM处理数据格式的训练样本和测试样本。下面一一道来(注:有网友向我要eclipse工程,下载地址见点击打开链接)
1、 准备训练样本和测试样本
直接上LibSVM官网就可以下载,我下载的UCI的UCI-breast-cancer数据集,训练样本和测试样本的基本格式是这样的
<label> <index1>:<value1> <index2>:<value2> ...
分别代表 类别 feature1索引:feature1值 feature2索引:feature2值
如果想自己定义核函数,那么属于precompute kernel values and input them as training and testing files.
此时训练样本和测试样本变成如下格式:
New training instance for xi: <label> 0:i 1:K(xi,x1) ... L:K(xi,xL)
New testing instance for any x: <label>