【问题标题】:WEKA output extra informationWEKA 输出额外信息
【发布时间】:2012-07-01 18:15:56
【问题描述】:
我为 WEKA 编写了一个自定义分类器,它需要提供除了实例的预测类之外的信息。具体来说,它是一个列表,描述了训练实例的每个子集对预测类的影响有多大。
additionalMeasureProducer 接口不起作用,因为我需要将字符串打印到 GUI。我希望用户能够选择输出此信息。我曾希望“分类器评估选项”对话框中的“输出模型”选项可以解决问题,但 WEKA 最终在分类发生之前调用了我的分类器的 toString() 方法。我认为这是一个错误,因为我的分类器在 weka.classifiers.lazy 包中,这意味着它在被分类的实例被提供给它之前不会被构建。
有人知道如何为自定义 WEKA 分类器添加更多 GUI 输出功能吗?
【问题讨论】:
标签:
machine-learning
weka
【解决方案1】:
好吧,我能找到正确执行此操作的唯一方法是实现一个特殊的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 和纯文本编写所有内容太多了,所以我只是让用户选择从我的自定义输出类中获取特殊信息,并从其他输出类中获取常规信息(如果他们需要特定格式)。