解释Weka中的分类

时间:2012-12-28 18:15:07

标签: weka decision-tree classification

我想用Weka来解决我的分类问题。 我有一组训练数据的实例。让我们说数据看起来像:

@relation Relation1

@attribute att1 {val11, val12}
@attribute att2 {val21, val22}
@attribute class {class1, class2, class3}

@data
val11, val21, class1
val11, val22, class2
val12, val21, class3

在我的代码中,我从文件中读取了训练集。我训练J48树并尝试对实例进行分类。但是,我不知道如何解释分类的结果。

我的代码如下:

try {
    DataSource source = new DataSource("trainingset.arff");
    Instances data = source.getDataSet();
    if (data.classIndex() == -1) {
        data.setClassIndex(data.numAttributes() - 1);
    }

    Instance xyz = new Instance(data.numAttributes());
    xyz.setDataset(data);
    xyz.setValue(data.attribute(0), "val11");
    xyz.setValue(data.attribute(1), "val21");

    String[] options = new String[1];
    options[0] = "-U"; // unpruned tree
    J48 tree = new J48(); // new instance of tree
    tree.setOptions(options); // set the options
    tree.buildClassifier(data); // build classifier

    double[] distributionForInstance = tree.distributionForInstance(xyz);
    System.out.println(distributionForInstance[0]);
    System.out.println(distributionForInstance[1]);
    System.out.println(distributionForInstance[2]);

} catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

作为输出我得到:

0.3333333333333333
0.3333333333333333
0.3333333333333333

我还尝试了其他分类实例的方法:

double classifyInstance = tree.classifyInstance(xyz);
            System.out.println(classifyInstance);

在这种情况下,输出为:

0.0

你能解释一下我应该如何解释来自distributionForInstance和classifyInstance方法的输出? 我的目标是能够创建分类器,告诉我给定实例属于哪个类。

2 个答案:

答案 0 :(得分:0)

查看javadocdistributionForInstance方法返回一个具有类成员概率的数组(实例的第一个元素概率在第一个类中等),classifyInstance返回该类(作为ID - 将索引转换为类标签数组)。

答案 1 :(得分:0)

使用value的{​​{1}}方法获取类标签:

Attribute