0

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

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

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

4

1 回答 1

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 和纯文本编写所有内容太多了,所以我只是让用户选择从我的自定义输出类中获取特殊信息,并从其他输出类中获取常规信息(如果他们需要特定格式)。

于 2012-07-06T15:09:45.707 回答