这个问题之前已经有人问过,但我没有理解答案,所以我再次发布这个问题,请回复。
我有一个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
混淆矩阵为空
该怎么办?
回答:
鉴于原发布者提供的信息不完整,以下是可能发生的情况:
您使用了
- Weka GUI选择器
- 选择了Weka探索器
- 在预处理选项卡上加载了您的训练数据
- 选择了分类选项卡
- 选择了J48分类器
- 在测试选项下选择了提供的测试集并提供了您提到的测试集
- 点击了开始
现在来说说您的问题:
“测试集上的评估”应该已经给出了提示,因为您正在评估分类器 – 或者更准确地说:评估训练好的模型。但对于评估,您需要将预测的类与实际类进行比较,而您没有提供实际类。因此,缺少类标签的实例将被忽略。
由于您没有其他带有类标签的测试实例,混淆矩阵为空。没有足够的信息来构建一个混淆矩阵。(顺便提一下:对于只有一个实例的混淆矩阵是没有意义的。)
查看实际预测
您需要转到更多选项…,点击选择旁边的输出预测并选择一个输出格式,例如纯文本,您将看到类似于下面的内容:
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。