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%。
================训练语料==================
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%。
相关文章推荐
- SVM算法,Java实现,libsvm实现-根据语料判别类别
- SVM实现垃圾邮件分类(java调用libsvm.jar)
- 动态规划排线算法问题java语言实现 在一块电路板的上、下2端分别有n个接线柱。根据电路设计,要求用导线(i,π(i))将上端接线柱与下端接线柱相连
- SVM实现多分类的程序基础工作(三)——基于纠错编码的SVM多类分类算法和基于二叉树的多类SVM算法的基本思想
- 3行程序搞定SVM分类-用JAVA程序调用LibSVM API 最简单的示例
- java 语言实现的随机数生成算法
- 3行程序搞定SVM分类-用JAVA程序调用LibSVM API 最简单的示例
- 【JAVA实现】K-近邻(KNN)分类算法
- 3行程序搞定SVM分类-用JAVA程序调用LibSVM API 最简单的示例
- java 语言实现的随机数生成算法
- [Java基础要义] Java语言中Object对象的hashCode()取值的底层算法是怎样实现的?
- 矩阵相乘算法的Java语言实现
- java语言实现常用算法(排序和查找)
- 一年前用java写的一个公交换乘算法测试,实现一次换乘
- “插入排序”算法Java语言的实现与详解
- 素数判断算法 - 拉宾-米勒测试定理(c++实现)
- SVM实现多分类的程序基础工作(二)——通过一个简单libsvm例子迈入libsvm学习的大门
- 【每天算法1】:用java 语言实现,输入一个数,就相应地输出的几维数组
- 用java写的一个公交换乘算法测试,实现一次换乘
- Java判断回文数算法简单实现