从属性计算实例数

问题描述

我正在尝试计算 .arff 文件中特定属性的实例数。虽然,我似乎只能从它出现的数据中选择属性而不是值。

在本例中,我尝试选择 Wins 在数据中出现的次数,但是,代码仅选择属性中的值 Wins

这是我正在使用的:

//create the class to load the data
package weka;

import weka.core.Instances;
import weka.core.converters.ConverterUtils.DataSource;

public class DatasetLoading {

  public static Instances loadData(String location) {
    try {
      return DataSource.read(location);
    }
    catch (Exception e) {
      System.err.println("Failed to load data from: " + location);
      e.printstacktrace();
      return null;
    }
  }

  public static void main(String[] args) {
    String dataLocation = "C:/Users/Emil/Downloads/Week 1/Arsenal_TRAIN1.arff";
    Instances train = loadData(dataLocation);
    System.out.println(train);
  }
}

//select for counts of values that appear in the data

public class test_learning {
public static void main(String[] args) throws Exception {
    String arff = "C:/Users/Emil/Downloads/Week 1/Arsenal_TRAIN1.arff";
    Instances data = DatasetLoading.loadData(arff);
    System.out.print("Num of Wins = " + data.attribute(2).value(2));

输出:获胜次数 = 获胜次数

预期:

输出:获胜次数 = 12

数据文件示例:

@relation Arsenal-weka.filters.unsupervised.attribute.Remove-R3

@attribute Leno {0,1}
@attribute Tierney {0,1}
@attribute class {Loss,Draw,Win}

@data
1,Loss
1,Loss
0,1,Draw
1,Draw
0,Win
0,Win
1,Win

解决方法

您可以使用 Instances.attributeStats(int) 方法 (Javadoc) 获取第三个属性 ({{ 3}}).