我正在使用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个不同的类,测试文件中的实例中包含的信息中没有相同的值。那为什么会发生这种事?非常感谢。
发布于 2013-09-23 05:17:21
您的J48决策树可能是一个单节点,它简单地表示每个实例都属于类“主题”。如果您使用Weka执行此过程,您可以右键单击结果缓冲区中的条目并选择“可视化树”。
如果发现树确实是单个节点,则可能是这样的,因为您可能正在处理不平衡的数据集。对于不平衡的数据集,J48剪枝过程可能会从移除导致少数类的分支中获益,并简单地预测一切,就像我猜的多数类“主题”一样。这是不平衡数据集的一个常见问题。您可以尝试使用SMOTE作为预处理过程(这里是一个很好的关于SMOTE的教程)。
如果您没有发现树是一个单一节点,您可以尝试手工进行一些预测,并可能得出为什么每个测试实例都被分类为“主题”的结论。
https://stackoverflow.com/questions/18913456
复制相似问题