在没有类标签的 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 中测试单个实例的主要内容,如果未能解决你的问题,请参考以下文章