这个问题已经被问到了,但我没有理解答案,所以我再次发布问题请回复。
我有一个weka模型,例如:j48我已经为我的数据集训练了该模型,现在我必须用一个实例来测试模型,它应该返回类标签。怎么做?
我尝试过这些方法:
1)当我给我的测试实例a,b,c,类为class时。它显示了评估分类器的问题.train和test不兼容
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
混淆矩阵为空
怎么办?
答案 0 :(得分:5)
鉴于来自OP的信息不完整,可能发生了以下情况:
您使用了
现在给你问题:
“评估测试集”应该已经放弃,因为您正在评估分类器 - 或更好:训练有素的模型。但是对于评估,您需要将预测的类与您未提供的实际类进行比较。因此,将忽略具有缺少类标签的实例。
由于您没有任何其他测试实例WITH class label,因此混淆矩阵为空。根本没有足够的信息来构建一个。 (并且只是作为旁注:只有一个实例的混淆矩阵有点无价值。)
您必须转到更多选项... ,点击输出预测旁边的选择,然后选择输出格式,例如 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。