我正在使用 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种不同的类,测试文件中实例中包含的信息中没有相同的值。那么,为什么会发生这种情况? 非常感谢你。
答案 0 :(得分:1)
您的J48决策树可能是单个节点,只是说每个实例都属于“主题”类。如果使用Weka gui执行此过程,则可以右键单击结果缓冲区中的条目,然后选择“Visualize Tree”。
如果您发现树确实是单个节点,则可能是这种方式,因为您可能正在处理不平衡的数据集。对于不平衡的数据集,J48修剪程序可能会从删除导致少数类的分支中获益,并简单地将所有内容预测为我认为是多数类“主题”。这是不平衡数据集的常见问题。您可以尝试使用SMOTE作为预处理过程(here是一个很好的SMOTE教程)。
如果您没有发现树是单个节点,您可以尝试手动进行一些预测,并可能得出结论,为什么每个测试实例都被归类为“主题”。