use*_*712 4 classification machine-learning prediction weka
这个问题已被问到,但我不明白答案所以我再次发布问题请回复.
我有一个weka模型,例如:j48我已经为我的数据集训练了该模型,现在我必须使用单个实例来测试模型,在该实例中它应该返回类标签.怎么做?
我试过这些方法:
1)当我给我的测试实例a,b,c,课堂上课时为?它显示了评估分类器的问题.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,............,?
Run Code Online (Sandbox Code Playgroud)
它没有显示任何这样的结果
=== 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
Run Code Online (Sandbox Code Playgroud)
混淆矩阵为空
该怎么办?
鉴于来自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
Run Code Online (Sandbox Code Playgroud)
此输出按照它们在测试文件中出现的顺序列出分类的实例.这个例子来自Weka网站关于"做出预测"的解释.
在这种情况下,直接从测试数据集中获取所有类属性都用"?"标记,"实际"列可以忽略,只是说明每个类属于一个未知类."预测"列显示实例1到5预测为1级,其值为0,实例6预测为2级,其值为1.错误字段为空; 如果正在对标记的测试集执行预测,则预测未能与标签匹配的每个实例将包含"+".实例1实际属于0级的概率估计为0.757.