2017-07-07 1 views
0

J'ai un modèle obtenu à partir classificateur weka et je veux tester dans le code java, mais quand je lis des cas, une erreur apparaît:Comment puis-je charger un fichier .csv en code java pour tester avec weka?

Exception in thread "main" java.io.IOException: keyword @relation expected, read Token[Word], line 1 
at weka.core.Instances.errms(Instances.java:1863) 
at weka.core.Instances.readHeader(Instances.java:1740) 
at weka.core.Instances.<init>(Instances.java:119) 
at licenta1.LoadModelWeka.main(LoadModelWeka.java:18) 

Mon code est:

package licenta1; 

import weka.core.Instances; 
import weka.classifiers.bayes.NaiveBayes; 
import weka.classifiers.trees.J48; 
import weka.classifiers.Evaluation; 

import java.util.Random; 
import java.io.BufferedReader; 
import java.io.FileReader ; 

public class LoadModelWeka 
{ 
    public static void main(String[] args) throws Exception { 
    // training 
     BufferedReader reader = null; 
     reader=new BufferedReader(new FileReader("D:\\aaaaaaaaaaaaaaaaaaaaaa\\Licenta\\BioArtLicTrainSetTask1.csv")); 
     Instances train =new Instances (reader); 
     train.setClassIndex(0);  
     reader.close(); 

     NaiveBayes nb = new NaiveBayes(); 
     nb.buildClassifier(train); 
     Evaluation eval = new Evaluation(train); 
     eval.crossValidateModel(nb, 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)+" ");   
    } 
} 

Quelqu'un peut-il Aidez moi? ensemble de formation Mt est en .csv le format

+0

Je pense que l'erreur est parce que vous avez fermé la 'BufferedReader' trop tôt, le 'lecteur' peut être référencé dans le' train', quand le 'NaiveBayes' utilise' train' pour lire les données, alors le 'reader' est déjà fermé. Essayons de déplacer le 'lecteur.close()' à la fin de la fonction –

Répondre