现在我们介绍使用Weka来对数据进行分类。对数据进行分类,我们必须先指定那一列作为预测类别。因为数据文件格式的问题,类别一般都是最后一列属性。我们可以使用setClassIndex来设置类别。然后我们要选择分类器,分类器有很多,我们暂时使用J48分类器。对数据进行训练可以使用buildClassifier,然后我们可以用classifyInstance来查看训练数据预测的类别值。当然预测的类别会用数值表示,比如0,1,2....代表预测的值属于第几个类别。例如类别的值为{sunny,rainy}那么0代表sunny,1代表rainy。
package InstanceTest;
import weka.core.Instances;
import weka.classifiers.trees.J48;
import weka.classifiers.trees.j48.*;
import java.io.*;
public class InstanceTest {
	/**
	 * @param args
	 */
	public Instances data;
	
	//设置预测类别  默认为最后一个
	public void SetClassIndex(Instances ins)
	{
		ins.setClassIndex(ins.numAttributes()-1);
	}
	
	public  Instances GetInstance(String FileName)throws Exception
	{
		FileReader reader=new FileReader(FileName);
	    data=new Instances(reader);
		return data;
	}
	public void classify()throws Exception
	{
		J48 classify=new J48();
		classify.buildClassifier(data);
		System.out.println(classify.classifyInstance(data.instance(0)));   
		
	}	
   public static void main(String[] args) {	
   try
   {
	   InstanceTest test=new InstanceTest();
	   Instances date=test.GetInstance("D://train.arff");
	   test.SetClassIndex(date);
	   test.classify();
   }
   catch(Exception e)
   {
	   e.printStackTrace();
   }
}
}
原文地址:http://www.cnblogs.com/GuoJiaSheng/p/3833040.html