Weka预测同一类

时间:2013-09-20 09:38:54

标签: java machine-learning classification weka

我正在使用 weka 来预测某些实例的类。为此,我有一个培训文件和一个测试文件。保存通过使用J48分类器运行10倍交叉验证测试获得的模型后,我使用此模型来预测测试文件中实例的类。问题是预测的类对于所有实例都是相同的。

=== Predictions on test data ===

 inst#     actual  predicted error prediction 
     1    34:BALT    1:Theme   +   0.216 
     2    34:BALT    1:Theme   +   0.216 
     3    34:BALT    1:Theme   +   0.216 
     4    34:BALT    1:Theme   +   0.216 
     5    34:BALT    1:Theme   +   0.216 
     6    34:BALT    1:Theme   +   0.216 
     7    34:BALT    1:Theme   +   0.216 
     8    34:BALT    1:Theme   +   0.216 
     9    34:BALT    1:Theme   +   0.216 
    10    34:BALT    1:Theme   +   0.216 
    11    34:BALT    1:Theme   +   0.216 
    12    34:BALT    1:Theme   +   0.216 
    13    34:BALT    1:Theme   +   0.216 
    14    34:BALT    1:Theme   +   0.216 
and so on....

模型可以预测14种不同的类,测试文件中实例中包含的信息中没有相同的值。那么,为什么会发生这种情况? 非常感谢你。

1 个答案:

答案 0 :(得分:1)

您的J48决策树可能是单个节点,只是说每个实例都属于“主题”类。如果使用Weka gui执行此过程,则可以右键单击结果缓冲区中的条目,然后选择“Visualize Tree”。

如果您发现树确实是单个节点,则可能是这种方式,因为您可能正在处理不平衡的数据集。对于不平衡的数据集,J48修剪程序可能会从删除导致少数类的分支中获益,并简单地将所有内容预测为我认为是多数类“主题”。这是不平衡数据集的常见问题。您可以尝试使用SMOTE作为预处理过程(here是一个很好的SMOTE教程)。

如果您没有发现树是单个节点,您可以尝试手动进行一些预测,并可能得出结论,为什么每个测试实例都被归类为“主题”。