有人这样做过吗?有没有关于如何使用此解析器模块的文档?我查看了代码,但我不清楚如何在解析后实际使用数据。
文件 src \ main \ java \ weka \ core \ converters \ ArffLoader.java (我假设是Arff解析发生的地方)有这些说明:
但是我还能用'数据'做些什么呢?如何访问每一行和每行中的值?
(顺便说一下,我是Java的新手。如果我运行这段代码,我是否可以对数据进行某种内省,看看它提供了什么?这就是我在Python中所做的。)
(我也愿意接受一个更简单的开源Arff解析器的建议,如果存在的话,可以在我的项目中使用。)
答案 0 :(得分:2)
在我看来,你的答案在于Instances
类 - 这是存储数据的地方。
我会找到Instances类的API,通过查找或生成其javadoc,或者只是简单地浏览它的源代码。此类的方法应该允许您操作从ARFF文件加载的数据。
答案 1 :(得分:1)
您可以使用Weka from Python,并获得内省。我已成功使用JRuby的Weka做同样的事情。谷歌“Weka文档”,以找到链接到稳定和开发版本的API的页面。我没有足够的声誉在我的答案中添加第二个链接:)
答案 2 :(得分:1)
weka解析器与其内部数据模型紧密相关 - Instances
。
ARFF格式难以解析,您可能最好编写一个直接生成所需数据表示形式的自定义解析器。
答案 3 :(得分:1)
获得Instances对象数据后,可以将其用于:
data.get(index) //get a instance
data.enumerateInstances() // Returns an enumeration of all instances in the dataset.
查看所有方法
答案 4 :(得分: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);
}
}
}
答案 5 :(得分: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);
}
}
}