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%。