java - arff 背后的概念以及如何在 java 中阅读 weka arff?

标签 java weka arff

为什么有人会使用 arff?请给出读取arff文件并在java中使用它的示例代码。

我在 weka 站点中找到了以下代码片段:

BufferedReader reader =
new BufferedReader(new FileReader("/some/where/file.arff"));
ArffReader arff = new ArffReader(reader);
Instances data = arff.getData();
data.setClassIndex(data.numAttributes() - 1);

那之后呢?有人可以解释上面发生了什么吗?如何从文件访问我的数据? weka 站点提到了两种不同的用法,即批处理和增量。两者有什么区别?

最佳答案

嗯,通常有人会使用 arff,因为它是一种非常简单的文件格式,基本上是一个带有描述数据的 header 的 csv 文件,这是通常的保存方式/使用 Weka 读取数据。

读取 arff 文件的示例代码正是您提供的代码,如果您想使用加载的实例,您应该使用您的数据。要打印它们:System.out.println(data); 您可以查看很多关于如何处理数据的示例(分类、聚类等)here .

您使用的代码在标准 BufferedReader 中加载 arff 文件,然后创建一个 ArffReader 实例 (arff),该实例从读取器中完全读取数据,之后您使用 getData 方法返回 Instances 中的数据。对象(称为数据)。最后,设置类的属性(arff 文件中的最后一个)。

如果您想迭代 Instances 对象并检索每个实例:

for (int i = 0; i <= data.numInstances - 1; i++) {
    Instance instance = data.getInstance(i);
    System.out.println(instance.stringValue(0)); //get Attribute 0 as String
}

您正在谈论从 arff 文件中批量和增量读取。批处理模式完全读取 arff 文件,增量模式让您有机会读取 arff 文件的每个实例(行)并手动添加。

增量模式代码:

 BufferedReader reader =
   new BufferedReader(new FileReader("/some/where/file.arff"));
 ArffReader arff = new ArffReader(reader, 1000);
 Instances data = arff.getStructure();
 data.setClassIndex(data.numAttributes() - 1);
 Instance inst;
 while ((inst = arff.readInstance(data)) != null) {
   data.add(inst);
 }

关于java - arff 背后的概念以及如何在 java 中阅读 weka arff?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29380820/

相关文章:

java - 将字符串中的随机整数分配给字符

java - 如何在 Java 中获取 LibSVM 分类器的权重?

r - 在数据框的开头插入列

machine-learning - 在大型 arff 数据集文件上运行 weka

java - 使用 Tomcat 配置 Apache Web 服务器并尝试部署 war 文件

java - 我发送到队列的 SOAP 请求在 IBM MQ 上格式不正确

java - 运行weka3.7.4包管理器时出错

php - 使用 PHP 进行文本挖掘

machine-learning - 如何在arff文件中表示n-gram特征?

java - 使用同一元素的多种表示形式解码 xml