weka编程开发初步-----使用不同的分类器进行分类

下面的程序使用了四种分类器,读入的文件是安装weka时自带的arff文件,我使用的是3.6.4版本的,需要另行下载libsvm.jar文件,加入到项目中。对于最新版本3.7.*貌似是在weka.classifiers.functions下面没有LibSVM类。。

package test;

import java.io.File;

import weka.classifiers.Classifier;
import weka.classifiers.bayes.NaiveBayes;
import weka.classifiers.functions.LibSVM;
import weka.classifiers.trees.J48;
import weka.classifiers.trees.RandomForest;
import weka.core.Instances;
import weka.core.converters.ArffLoader;

public class Test1 {

	public static void main(String[] args) throws Exception {
		//Classifier m_classifier = new RandomForest();
		Classifier m_classifier = new J48();
		//Classifier m_classifier = new NaiveBayes();
		//Classifier m_classifier = new LibSVM();
		
		File inputFile = new File(
				"D://Program Files//Weka-3-6//data//cpu.with.vendor.arff");// 训练语料文件

		ArffLoader atf = new ArffLoader();

		try {
			atf.setFile(inputFile);

			Instances instancesTrain = atf.getDataSet(); // 读入训练文件

			inputFile = new File(
					"D://Program Files//Weka-3-6//data//cpu.with.vendor.arff");// 测试语料文件

			atf.setFile(inputFile);

			Instances instancesTest = atf.getDataSet(); // 读入测试文件

			instancesTest.setClassIndex(0); // 设置分类属性所在行号(第一行为0号),instancesTest.numAttributes()可以取得属性总数

			double sum = instancesTest.numInstances(), // 测试语料实例数

			right = 0.0f;

			instancesTrain.setClassIndex(0);

			m_classifier.buildClassifier(instancesTrain); // 训练

			for (int i = 0; i < sum; i++)// 测试分类结果

			{
				if (m_classifier.classifyInstance(instancesTest.instance(i)) == instancesTest
						.instance(i).classValue())// 如果预测值和答案值相等(测试语料中的分类列提供的须为正确答案,结果才有意义)

				{
					right++;// 正确值加1

				}

			}
			System.out.println("RandomForest classification precision:" + (right / sum));
			//weka.core.SerializationHelper.write("b.model", m_classifier);//序列化weka模型
		} catch (Exception e) {
			e.printStackTrace();
		}

	}

}


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值