在没有类标签的 weka 中测试单个实例

Posted

技术标签:

【中文标题】在没有类标签的 weka 中测试单个实例【英文标题】:Test single instance in weka which has no class label 【发布时间】:2013-08-15 11:49:24 【问题描述】:

已经有人问过这个问题,但我不明白答案,所以我再次发布问题,请回复。

我有一个 weka 模型,例如:j48 我已经为我的数据集训练了该模型,现在我必须使用一个应该返回类标签的实例来测试该模型。怎么做?

我已经尝试了这些方法:

1) 当我将我的测试实例 a,b,c,class 为 class 作为 ?。它显示评估分类器的问题。训练和测试不兼容

2)当我列出所有类标签并放置 ?对于测试实例的类标签,如下所示:

@attribute class 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27

@data
1,2,............,?

它没有显示任何这样的结果

=== Evaluation on test set ===
=== Summary ===

Total Number of Instances                0     
Ignored Class Unknown Instances                  1     

=== Detailed Accuracy By Class ===

               TP Rate   FP Rate   Precision   Recall  F-Measure  ROC Area  Class
                 0         0          0         0         0         ?        1
                 0         0          0         0         0         ?        2
                 0         0          0         0         0         ?        3
Weighted Avg.  NaN       NaN        NaN       NaN       NaN       NaN    

混淆矩阵为空

怎么办?

【问题讨论】:

链接是:***.com/questions/10649708/… 来自gui weka explorer 伙计,你杀了我。如果您真的希望人们帮助您,您真的不应该让我们不得不从您身上榨取一切。我现在试着回答。 先生,我已经明确提到可能是我没有明确介绍您。对于给您带来的不便,我深表歉意 不用担心,很高兴我能帮上忙。 【参考方案1】:

鉴于 OP 提供的信息不完整,可能发生的情况如下:

你用过

    Weka GUI 选择器 选择了Weka Explorer预处理标签上加载了您的训练数据 选择了分类标签 选择了J48分类器 在测试选项下选择了提供的测试集并提供了上述测试集 点击开始

现在给你的问题:

"Evaluation on test set" 应该已经放弃了,因为您正在评估分类器 - 或者更好:经过训练的模型。但是为了评估,您需要将预测的类与您未提供的 实际 类进行比较。因此,缺少类标签的实例将被忽略。

由于您没有任何其他带有类标签的测试实例,因此混淆矩阵为空。根本没有足够的信息来构建一个。 (顺便说一句:只有一个实例的混淆矩阵有点毫无价值。)

查看实际预测

您必须转到更多选项...,点击输出预测旁边的选择并选择一种输出格式,例如PlainText,您会看到如下内容:

inst#     actual  predicted error prediction
    1        1:?        1:0       0.757 
    2        1:?        1:0       0.824 
    3        1:?        1:0       0.807 
    4        1:?        1:0       0.807 
    5        1:?        1:0       0.79 
    6        1:?        2:1       0.661 

此输出按照它们在测试文件中出现的顺序列出分类实例。这个例子取自the Weka site about "Making predictions",解释如下。

在这种情况下,直接取自一个测试数据集,其中所有类 属性由“?”标记,“实际”列,可以是 忽略,简单地说明每个类属于一个未知类。 “预测”列显示实例 1 到 5 是预测的 属于第 1 类,其值为 0,实例 6 被预测为 类 2,其值为 1。错误字段为空;如果预测 在标记的测试集上执行,每个实例 预测失败的标签将包含一个“+”。这 估计实例 1 实际上属于类 0 的概率 为 0.757。

【讨论】:

先生您能解释一下输出吗 我理解输出 好的,但是为了确保我已经添加了一些解释并链接到 Weka 网站 在java中也可以做到这一点吗? Weka 是纯 Java,所以是的。您可以查看源代码并查看使用给定参数执行了什么,因此您应该能够将其包含在您自己的程序中,如果这是您所要求的。

以上是关于在没有类标签的 weka 中测试单个实例的主要内容,如果未能解决你的问题,请参考以下文章

如何使用我构建的模型在 Weka 中测试单个实例?

类别先验在 Weka 分类中的作用

Weka 如何将类标签附加到测试数据集?

Weka:如何获取测试实例的每个类的概率

在 Weka 中对单个实例进行分类(MultilayerPerceptron)

如何在 WEKA 中测试分类数据集?