2015-11-05 1 views
0

У меня есть следующий код, в котором я применил классификатор набора учебных данных, который я хочу сохранить (с перекрестной проверкой) в качестве модели. и применить его снова в наборе тестовых данных.Как сохранить модель и применить ее в тестовом наборе данных на java

import weka.core.Instances; 
import weka.classifiers.trees.J48; 
import weka.classifiers.Evaluation; 
import java.util.Random; 
import java.io.BufferedReader; 
import java.io.FileReader ; 

public class EECS_738 
{ 
    public static void main(String[] args) throws Exception { 
    // training 
     BufferedReader reader = null; 
     reader=new BufferedReader(new FileReader("/Users/Sumiah/Desktop/ProjectTraining&TestingData/project/EECS738_Train_Project.arff")); 
     Instances train =new Instances (reader); 
     train.setClassIndex(0);  
     reader.close(); 

     J48 j48 = new J48(); 
     j48.buildClassifier(train); 
     Evaluation eval = new Evaluation(train); 
     eval.crossValidateModel(j48, train, 10 , new Random(1)); 

     System.out.println(eval.toSummaryString("\n Results \n=====\n",true)); 
     System.out.println(eval.fMeasure(1)+" "+eval.precision(1)+" "+eval.recall(1)+" ");   
    } 
} 
+0

Классификатор Wekas ​​реализует сериализуемое использование, поэтому используйте ObjectOutputStream – user

+0

Я не получил * с частью перекрестной проверки *. Модель, которую вы собираетесь сохранить, будет взята из всех данных обучения. Перекрестная проверка - это всего лишь процесс оценки. –

ответ

1

Для версий больше, чем 3.5.5 это так просто, как:

J48 j48 = new J48(); 
j48.buildClassifier(train); 
weka.core.SerializationHelper.write("/some/where/j48.model", j48); 

И загрузка только:

Classifier cls = (Classifier) weka.core.SerializationHelper.read("/some/where/j48.model"); 

См here для получения дополнительной информации и как сделать это в наследство версия!

 Смежные вопросы

  • Нет связанных вопросов^_^