简体   繁体   English

如何在 java 代码中加载 a.csv 文件以使用 weka 进行测试?

[英]How can I load a .csv file in java code to test with weka?

I have a model obtained from weka classifier and I want to test it in java code, But when I read instances, an error appear:我有一个从weka分类器获得的模型,我想用 java 代码测试它,但是当我读取实例时,出现错误:

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)

My code is:我的代码是:

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)+" ");           
   }   
}

Can somebody help me?有人可以帮我吗? Mt training set is in .csv format Mt训练集为.csv格式

This snippet is useful to directly load csv content and convert them to Instances.此代码段对于直接加载 csv 内容并将其转换为实例很有用。 Usually.arff is used for weka operations and this loader directly converts csv files to arff internally and then to Instances class.通常 .arff 用于 weka 操作,此加载器直接在内部将 csv 文件转换为 arff,然后再转换为 Instances 类。

 CSVLoader loader = new CSVLoader();
 loader.setSource(new File("filename.csv"));
 Instances trainingDataSet = loader.getDataSet();

Instead of using Buffered Reader you can try您可以尝试使用 Buffered Reader 而不是

DataSource source = new DataSource("/some/where/data.arff");

For more information visit this link http://weka.wikispaces.com/Use+WEKA+in+your+Java+code有关更多信息,请访问此链接http://weka.wikispaces.com/Use+WEKA+in+your+Java+code

im using weka jar 3.7.10, and this is how i can load csv using weka:我使用 weka jar 3.7.10,这就是我如何使用 weka 加载 csv:

 DataSource source1 = new DataSource("D:\\aaaaaaaaaaaaaaaaaaaaaa\\Licenta\\BioArtLicTrainSetTask1.csv"); Instances pred_test = source1.getDataSet();

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM