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

Java调用weka代码

2017-08-18 09:41 204 查看
weka与其说一个软件,不如说是一个算法库,集成了主流的算法,并提供GUI以及CLI操作

那么除了在weka自身的GUI操作以为,用java项目怎么调用weka呢?

1我们安装后的weka目录里面有一个weka.jar



2将weka包导入Eclipse中的java工程(过程应该都明白吧,新建个lib文件夹,将weka.jar放进去,然后右键buildpath,之后就可以写代码调用了)

3调用例子:在main函数里调用

import java.io.File;

import weka.classifiers.Classifier;
import weka.classifiers.bayes.NaiveBayes;
import weka.core.Instances;
import weka.core.converters.ArffLoader;
public class Test {
public static void main(String[] args) throws Exception{
Classifier m_classifier = new NaiveBayes();
//读取trainingdata
File inputFile = new File("C://Users//jiayunqiang//Desktop//inspur//weka学习//数据//Arff//labor.arff");//训练语料文件
ArffLoader atf = new ArffLoader();
atf.setFile(inputFile);
Instances instancesTrain = atf.getDataSet();
//读取testdata
inputFile = new File("C://Users//jiayunqiang//Desktop//inspur//weka学习//数据//Arff//labor.arff");//测试语料文件
atf.setFile(inputFile);
Instances instancesTest = atf.getDataSet(); // 读入测试文件
instancesTest.setClassIndex(16); //设置分类属性所在列(第一列为0号),instancesTest.numAttributes()可以取得属性总数
double sum = instancesTest.numInstances(),//测试语料实例数
right = 0.0f;
instancesTrain.setClassIndex(16);

m_classifier.buildClassifier(instancesTrain); //训练
for(int  i = 0;i<sum;i++)//测试分类结果
{
if(m_classifier.classifyInstance(instancesTest.instance(i))==instancesTest.instance(i).classValue())//如果预测值和答案值相等(测试语料中的分类列提供的须为正确答案,结果才有意义)
{
right++;//测试正确
}
}
System.out.println("NaiveBayes classification precision:"+(right/sum));
}
}


输出结果为
NaiveBayes classification precision:0.9824561403508771
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: