0

有人做过吗?有没有关于如何使用这个解析器模块的文档?我已经查看了代码,但我不清楚如何在数据被解析后实际使用它。

文件src\main\java\weka\core\converters\ArffLoader.java(我认为这是 Arff 解析发生的地方)具有以下说明:

  • 批量使用的典型代码:
  • BufferedReader reader = new BufferedReader(new FileReader("/some/where/file.arff"));
  • ArffReader arff = new ArffReader(reader);
  • 实例数据 = arff.getData();
  • data.setClassIndex(data.numAttributes() - 1);

但是我还能用“数据”做什么?如何访问每一行以及每一行中的值?

(顺便说一句,我是 Java 新手。如果我运行这段代码,是否可以对数据进行某种内省以查看它提供了什么?这就是我在 Python 中会做的事情。)

(如果存在的话,我也愿意在我的项目中使用更简单的开源 Arff 解析器的建议。)

4

6 回答 6

2

在我看来,您的答案在于Instances课堂 - 那是存储数据的地方。

我会找到 Instances 类的 API,或者通过定位或生成它的 javadoc,或者只是细读它的源代码。此类的方法应允许您操作已从 ARFF 文件加载的数据。

于 2010-08-06T07:10:50.507 回答
1

您可以使用Python 中的 Weka,并进行自省。我已经成功地使用来自 JRuby 的 Weka 来做同样的事情。谷歌“Weka 文档”以找到链接到稳定版和开发版 API 的页面。我没有足够的声誉在我的答案中添加第二个链接:)

于 2010-08-16T00:44:20.780 回答
1

获得 Instances 对象数据后,您可以使用它来:

data.get(index) //get a instance
data.enumerateInstances() // Returns an enumeration of all instances in the dataset.

您可以在以下位置查看所有方法:Instances JavaDoc

于 2013-03-14T23:47:46.763 回答
1

weka 解析器与其内部数据模型密切相关 - Instances.

ARFF 格式并不难解析,您最好编写一个自定义解析器,直接生成您想要的数据表示。

于 2011-11-25T17:52:28.903 回答
1

我用过这样的东西:

public class Main {
    private static final String ARFF_FILE_PATH = "YOUR_ARFF_FILE_PATH";

    public static void main(String[] args) throws IOException {
        ArffLoader arffLoader = new ArffLoader();

        File datasetFile = new File(ARFF_FILE_PATH);
        arffLoader.setFile(datasetFile);

        Instances dataInstances = arffLoader.getDataSet();

        for(Instance inst : dataInstances){
            System.out.println("Instance:" + inst);
        }
    }
}
于 2013-11-08T18:26:18.983 回答
0
import java.io.*;
import weka.core.Instance;
import weka.core.Instances;
import weka.core.converters.ArffLoader;
import weka.core.converters.ArffLoader.ArffReader;

public class assign3 {
     public static void main(String args[]) throws IOException {

ArffLoader arffloader=new ArffLoader();
File filedata = new File("/home/cse611/Downloads/iris.arff");
arffloader.setFile(filedata);

     Instances data = arffloader.getDataSet();`enter code here`
     for(Instance inst : data){
         System.out.println("Instance:" + inst);
     }
     }
}
于 2015-02-06T06:10:38.170 回答