簡體   English   中英

如何在 java 代碼中加載 a.csv 文件以使用 weka 進行測試?

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

我有一個從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)

我的代碼是:

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

有人可以幫我嗎? Mt訓練集為.csv格式

此代碼段對於直接加載 csv 內容並將其轉換為實例很有用。 通常 .arff 用於 weka 操作,此加載器直接在內部將 csv 文件轉換為 arff,然后再轉換為 Instances 類。

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

您可以嘗試使用 Buffered Reader 而不是

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

有關更多信息,請訪問此鏈接http://weka.wikispaces.com/Use+WEKA+in+your+Java+code

我使用 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