0 准备工作
1)下载一个LibSVM,解压之,在libsvm的文件夹下可以看到有多种语言的实现,本篇基于java;2)了解一下SVM的原理还是非常必要的,不然都不知道参数是啥意思。。我看过一篇SVM入门的博客不错,里面有入门十讲,分享之。
3)要准备好符合LibSVM输入格式的数据文件。
1 LibSVM的使用介绍
0)LibSVM输入格式:label index1:属性值 ;index2:属性值 index3:属性值 ...... indexn:属性值。
其中,label为你的类别号,随便你怎么设置,比如体育类label为0,军事类label为1;
index的目的其实就是标识一下你这个属性值是属于哪个特征的,你可以给它“安倍”或者“三胖”,随便你;
文本分类中属性值是某个特征词的权重值,不能随意改变,值得一提的是,如果你的属性值为0,那么就可以把这个省略,比如index2的属性值为0,那么我就可以写label index1:value index3:value....indexn:value。 你可能会想,这样省略不会造成前后关系改变从而LibSVM不能正确区分是哪一个特征词的属性值吗?index!我们还有index,index就有标识是属于哪个特征词的作用!这样的省略会大大提高LibSVM的速度!
每一篇文章都这样表示,最后弄到一个文件里面去,这就是LibSVM的输入文件了!
在上一篇经过TFIDF赋权值处理写入文件的时候,我们就可以按照这种格式生成文件了。
1)首先导入libsvm.jar包到你的工程,我的jar包在“E:\libsvm\libsvm-3.20\java\libsvm.jar”;
2)在“E:\libsvm\libsvm-3.20\java\”下可以看到有svm_train.java、svm_predi