2013-11-16 4 views
0

Я хочу использовать дерево weka j48 с проверкой 5-cross. Вот мой код до сих пор,Настройка количества перекрестных проверок в j48 tree weka

public class WekaJvMain { 
    public static void main(String[] args) { 
     try 
     { 
      CSV2Arff converter =new CSV2Arff(); 
      converter.convert(); 

      DataSource source = new DataSource("data.arff"); 
      Instances train = source.getDataSet(); 

      train.setClassIndex(train.numAttributes() - 1); // setting class attribute 

      // classifier 
      J48 j48 = new J48(); 
      j48.setUnpruned(true);  // using an unpruned J48 

      j48.buildClassifier(train); 
      System.out.print(j48.graph()); 

     } 
     catch(Exception e) 
     { 
      e.printStackTrace(); 
     }  
    } 
} 

Этот код обучает данные и печатает дерево j48. Однако я не мог найти, как настроить количество сгибов для перекрестной проверки? Пожалуйста, объясните подробно, я плохо разбираюсь в Java.

+0

Правильно ли я понимаю? Вы хотите оценить J48 с 5-кратной перекрестной проверкой? – Walter

+0

Да, с 5 или более раз. – genclik27

ответ

1

Вот ваш код, дополненный 5-кратной проверкой оценки вашего классификатора j48. Важно, чтобы вы проводили оценку перед обучением окончательного классификатора. Дополнительную информацию можно найти: here.

public class WekaJvMain { 
    public static void main(String[] args) { 
     try 
     { 
      CSV2Arff converter =new CSV2Arff(); 
      converter.convert(); 

      DataSource source = new DataSource("data.arff"); 
      Instances train = source.getDataSet(); 

      train.setClassIndex(train.numAttributes() - 1); // setting class attribute 

      // classifier 
      J48 j48 = new J48(); 
      j48.setUnpruned(true);  // using an unpruned J48 

      //evaluate j48 with cross validation 
      Evaluation eval=new Evaluation(train); 

      //first supply the classifier 
      //then the training data 
      //number of folds 
      //random seed 
      eval.crossValidateModel(j48, train, 5, new Random(1)); 
      System.out.println("Percent correct: "+ 
           Double.toString(eval.pctCorrect())); 


      j48.buildClassifier(train); 
      System.out.print(j48.graph()); 

     } 
     catch(Exception e) 
     { 
      e.printStackTrace(); 
     }  
    } 
}
Смежные вопросы