java调用weka里面的分类器做回归

来源:互联网 发布:淘宝代销赚钱吗 编辑:程序博客网 时间:2024/06/15 01:23
这里是M5P分类器,源文档有很大帮助
package rf;import java.io.BufferedReader;import java.io.FileReader;import java.io.PrintStream;import weka.classifiers.rules.M5Rules;import weka.classifiers.trees.DecisionStump;import weka.classifiers.trees.M5P;import weka.classifiers.trees.RandomForest;import weka.core.converters.ConverterUtils.DataSource;import weka.core.Instances; public class randomf {public void runrf(int set) throws Exception{DataSource dataSource=new DataSource("svm/train_"+set+".arff");Instances data=dataSource.getDataSet();data.setClassIndex(data.numAttributes()-1);RandomForest rForest=new RandomForest();rForest.buildClassifier(data);//trainInstances predictInstances=new Instances(new BufferedReader(new FileReader("svm/predict_"+set+".arff")));predictInstances.setClassIndex(predictInstances.numAttributes()-1);int sum=predictInstances.numAttributes();for (int i = 0; i < sum; i++) {double real=predictInstances.instance(i).classValue();double dis=rForest.classifyInstance(predictInstances.instance(i));System.out.println(real+" "+dis);}System.out.println("end");}
//上面是随机怎林的分类,不能用于回归public void m5p(int set,int min) throws Exception{PrintStream printStream=new PrintStream("set"+set+".predict");//文件输出DataSource dataSource=new DataSource("svm/train_"+set+".arff");//读取训练文件Instances data=dataSource.getDataSet();data.setClassIndex(data.numAttributes()-1);//最后一个是label//RandomForest rForest=new RandomForest();M5P m5p=new M5P();
String[] opString=new String[3];opString[0]="-R";opString[1]="-M";opString[2]=Integer.toString(min);m5p.setOptions(opString);//设置参数
m5p.buildClassifier(data);//trainInstances predictInstances=new Instances(new BufferedReader(new FileReader("svm/predict_"+set+".arff")));//predictpredictInstances.setClassIndex(predictInstances.numAttributes()-1);int sum=predictInstances.numInstances();System.out.println(sum);for (int i = 0; i < sum; i++) {//double real=predictInstances.instance(i).classValue();double dis=m5p.classifyInstance(predictInstances.instance(i));printStream.println(dis);}printStream.close();System.out.println("set "+set+"finished");}}

0 0
原创粉丝点击