我为WEKA编写了一个自定义分类器,除了实例的预测类之外,它还需要提供信息。具体来说,它是一个列表,描述了训练实例的每个子集对预测类的影响有多大。
additionalMeasureProducer
接口不起作用,因为我需要将字符串打印到GUI。我希望用户能够选择输出此信息。我曾希望选项"输出模型"在"分类器评估选项"对话框可以解决这个问题,但是在分类发生之前,WEKA最终会调用我的分类器toString()
方法。我认为这是一个错误,因为我的分类器在weka.classifiers.lazy
包中,这意味着它不会被构建,直到给予它分类的实例。
有没有人知道如何向自定义WEKA分类器添加更多GUI输出功能?
答案 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和纯文本写的都太多了,所以我只是让用户选择从我的自定义输出类中获取特殊信息,如果他们需要特定的格式,则从其他输出类中获取常规信息。