Java 重用Weka代码解析ARFF文件

Java 重用Weka代码解析ARFF文件,java,weka,arff,Java,Weka,Arff,有人这样做过吗?有关于如何使用这个解析器模块的文档吗?我已经浏览了代码,但不清楚在解析数据之后如何实际使用它 文件src\main\java\weka\core\converters\ArffLoader.java(我假设是Arff解析发生的地方)有以下说明: 批量使用的典型代码: BufferedReader=newBufferedReader(newFileReader(“/some/where/file.arff”) ArffReader arff=新的ArffReader(读卡器) 实

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

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

  • 批量使用的典型代码:
  • BufferedReader=newBufferedReader(newFileReader(“/some/where/file.arff”)
  • ArffReader arff=新的ArffReader(读卡器)
  • 实例数据=arff.getData()
  • data.setClassIndex(data.numAttributes()-1)
但我还能用“数据”做什么?如何访问每行以及每行中的值?

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


(如果我的项目中存在一个更简单的开源Arff解析器,我也愿意接受建议。)

在我看来,您的答案在于
实例
类,即存储数据的地方


我可以通过查找或生成实例类的javadoc,或者简单地阅读其源代码来找到实例类的API。此类的方法应允许您操作从ARFF文件加载的数据。

我认为您的答案位于
实例类中,即存储数据的地方


我可以通过查找或生成实例类的javadoc,或者简单地阅读其源代码来找到实例类的API。此类的方法应允许您操作已从ARFF文件加载的数据。

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

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

weka解析器与它们的内部数据模型-
实例紧密相连


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

weka解析器与其内部数据模型-
实例紧密相关


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

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

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

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

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

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

您可以在以下位置看到所有方法:

我使用了如下方法:

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

我用了这样的方法:

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

请在答案中添加代码说明。请在答案中添加代码说明。