您的位置:首页 > 编程语言 > Java开发

SVM分类算法,libsvm的Java语言实现-根据语料和测试语料判断准确率的

2015-03-27 12:38 381 查看
1、根据语料和测试语料判断准确率的
================训练语料==================
1 1:190 2:70
1 1:180 2:80
-1 1:161 2:80
-1 1:161 2:47
==========================================

两个分类(1:男生 -1:女生)
1 1:190 2:70 代表的含义是
1 男生
1 190第一维特征值 男生的身高为190厘米
2 70 第二维特征值 男生的体重为70kg

1 1:180 2:80
1 男生
1 180第一维特征值 男生的身高为180厘米
2 80 第二维特征值 男生的体重为80kg

-1 1:161 2:80
-1 女生
1 161第一维特征值 男生的身高为161厘米
2 80 第二维特征值 男生的体重为80kg

-1 1:161 2:47
-1 女生
1 161第一维特征值 男生的身高为161厘米
2 47 第二维特征值 男生的体重为47kg

==================测试语料==================
1 1:185 2:85
-1 1:161 2:50

1 1:185 2:85

-1 1:161 2:50

1 1:185 2:85

-1 1:161 2:50

1 1:185 2:85

-1 1:161 2:50

1 1:185 2:85

1 1:161 2:50 //故意写错一个,得到的准确率就是90%
==========================================

训练语料的含义:
1 1:185 2:85 代表的含义是
1 男生 (已经标注好的)
1 185第一维特征值 男生的身高为185厘米
2 85 第二维特征值 男生的体重为85kg

-1 1:161 2:50
-1 女生
1 161第一维特征值 男生的身高为161厘米
2 50 第二维特征值 男生的体重为50kg

================测试准确率==================
1、利用训练语料,训练处一个模型
2、利用模型对测试语料进行分类
3、对每一个测试进行分类之后,由于测试语料已经标注好了,对比通过模型分类和测试语料标注的类别是否一致
4、统计对测试语料分类的结果中的正确数和总的个数的比例

================代码==================

package cn.liip.dh.svm.根据语料和测试语料判断准确率的;

import java.io.IOException;

public class SvmForPrecision {

public static void main(String[] args) throws IOException {
String[] trainArgs = { "训练语料.txt" };// directory of // training file
String modelFile = svm_train.main(trainArgs);
String[] testArgs = { "测试语料.txt", modelFile,"分类结果.txt" };// directory of test file, model
Double accuracy = svm_predict.main(testArgs);
System.out.println("SVM Classification is done! The accuracy is :"+ accuracy);
}

}

==结果

*
optimization finished, #iter = 2
nu = 1.0
obj = -2.0, rho = 1.891752926838503E-44
nSV = 4, nBSV = 4
Total nSV = 4
Accuracy = 90.0% (9/10) (classification)

SVM Classification is done! The accuracy is :0.9

故意写错了一个,就是将测试语料中,最后一个判断,这个得到这样的准确率达到90%。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐