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

这个问题之前已经有人问过,但我没有理解答案,所以我再次发布这个问题,请回复。

我有一个Weka模型,例如:J48,我已经用我的数据集训练了这个模型,现在我需要用一个没有类标签的单个实例来测试这个模型,该如何操作?

我尝试了以下方法:

1)当我给出测试实例a,b,c,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}@data1,2,............,?

它没有显示任何结果,如下所示:

=== 测试集上的评估 ====== 摘要 ===总实例数                0     忽略类未知实例                  1     === 按类详细准确度 ===               TP 率   FP 率   精确度   召回率  F-度量  ROC 面积  类                 0         0          0         0         0         ?        1                 0         0          0         0         0         ?        2                 0         0          0         0         0         ?        3加权平均  NaN       NaN        NaN       NaN       NaN       NaN    

混淆矩阵为空

该怎么办?


回答:

鉴于原发布者提供的信息不完整,以下是可能发生的情况:

您使用了

  1. Weka GUI选择器
  2. 选择了Weka探索器
  3. 预处理选项卡上加载了您的训练数据
  4. 选择了分类选项卡
  5. 选择了J48分类器
  6. 在测试选项下选择了提供的测试集并提供了您提到的测试集
  7. 点击了开始

现在来说说您的问题:

测试集上的评估”应该已经给出了提示,因为您正在评估分类器 – 或者更准确地说:评估训练好的模型。但对于评估,您需要将预测的类与实际类进行比较,而您没有提供实际类。因此,缺少类标签的实例将被忽略。

由于您没有其他带有类标签的测试实例,混淆矩阵为空。没有足够的信息来构建一个混淆矩阵。(顺便提一下:对于只有一个实例的混淆矩阵是没有意义的。)

查看实际预测

您需要转到更多选项…,点击选择旁边的输出预测并选择一个输出格式,例如纯文本,您将看到类似于下面的内容:

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 

此输出按测试文件中出现的顺序列出了分类实例。此示例取自Weka网站关于“进行预测”的页面,并附有以下解释。

在这种情况下,直接从测试数据集中提取,其中所有类属性都被标记为“?”,“实际”列可以忽略,仅表示每个类属于未知类。 “预测”列显示实例1到5被预测为类1,其值为0,而实例6被预测为类2,其值为1。错误字段为空;如果对标记的测试集进行预测,每个预测未能匹配标签的实例将包含一个“+”。实例1实际属于类0的概率估计为0.757。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注