如何从java代码中的WEKA分类器获取分发的类别名称

时间:2012-11-30 18:32:21

标签: java weka

我有一个来自WEKA的简单天真贝叶斯分类器。我正在使用目录结构并通过TextDirectoryLoader读取它。目录结构是

Training_Data
     Spam (folder)
         text files
     Ham (folder)
         text files

我可以得到像这样的发行版

for(Instance i: testInstances){

    double [] distributions = classifier.distributionForInstance(i);
    for(double d : distributions)
        System.out.println(d);
}

我想要做的是获取类别名称以及分布,以便我可以将其打印出来

System.out.println("Category: "+/*something to get the category name*/+ ":"+ d);

我一直在寻找几个小时,无法弄清楚如何去做。谁知道怎么做?

1 个答案:

答案 0 :(得分:1)

您可以使用instance.classAttribute().value(valIndex),其中valIndex是该类别的索引:

for(Instance i: testInstances){
  double [] distributions = classifier.distributionForInstance(i);
  for(int index = 0; index < distributions.length; index++)
      System.out.println(i.classAttribute().value(index) + ": " + distributions[index]);
}