4

这个问题已经被问过了,但我不明白答案,所以我再次发布这个问题,请回复。

我有一个 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}

@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    

混淆矩阵为空

该怎么办?

4

1 回答 1

5

鉴于 OP 提供的信息不完整,可能发生的情况如下:

你用过

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

现在给你的问题:

评估测试集”应该放弃它,因为您正在评估分类器 - 或者更好:训练模型。但是对于评估,您需要将预测的类与您未提供的实际类进行比较。因此,缺少类标签的实例将被忽略。

由于您没有任何其他带有类标签的测试实例,因此混淆矩阵为空。根本没有足够的信息来构建一个。(顺便说一句:只有一个实例的混淆矩阵有点毫无价值。)

查看实际预测

您必须转到More options ...,单击Output predictions旁边的Choose并选择一种输出格式,例如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 

此输出按照它们在测试文件中出现的顺序列出分类实例。这个例子取自Weka 网站上关于“Making predictions”的解释,解释如下。

在这种情况下,直接取自所有类属性都用“?”标记的测试数据集,可以忽略的“实际”列只是说明每个类属于一个未知类。“predicted”列显示实例 1 到 5 被预测为类 1,其值为 0,实例 6 被预测为类 2,其值为 1。错误字段为空;如果在有标签的测试集上执行预测,则预测与标签不匹配的每个实例都将包含一个“+”。实例 1 实际属于类 0 的概率估计为 0.757。

于 2013-08-21T12:45:00.327 回答