WEKA输出额外信息

时间:2012-06-30 14:37:45

标签: machine-learning weka

我为WEKA编写了一个自定义分类器,除了实例的预测类之外,它还需要提供信息。具体来说,它是一个列表,描述了训练实例的每个子集对预测类的影响有多大。

additionalMeasureProducer接口不起作用,因为我需要将字符串打印到GUI。我希望用户能够选择输出此信息。我曾希望选项"输出模型"在"分类器评估选项"对话框可以解决这个问题,但是在分类发生之前,WEKA最终会调用我的分类器toString()方法。我认为这是一个错误,因为我的分类器在weka.classifiers.lazy包中,这意味着它不会被构建,直到给予它分类的实例。

有没有人知道如何向自定义WEKA分类器添加更多GUI输出功能?

1 个答案:

答案 0 :(得分:2)

嗯,我能找到正确执行此操作的唯一方法是实现一个特殊的weka.classifiers.evaluation.output.prediction.AbstractOutput,它只能用于我的分类器。我使用globalInfo()getDisplay()指定了它,我的doPrintClassification方法就是这样开始的:

@Override
protected void doPrintClassification(Classifier classifier, Instance inst,
        int index) throws Exception {
    if (!(classifier instanceof MyClassifier))
        throw new IllegalArgumentException(
                "This output can only be used with the MyClassifier classifier");

    MyClassifier mc = (MyClassifier) classifier;

这样我就可以调用正确的方法来获取分类器的信息。为CSV,HTML和纯文本写的都太多了,所以我只是让用户选择从我的自定义输出类中获取特殊信息,如果他们需要特定的格式,则从其他输出类中获取常规信息。