【发布时间】:2017-12-07 20:02:30
【问题描述】:
我正在使用 WEKA API weka-stable-3.8.1。
我一直在尝试使用J48 决策树(weka 的 C4.5 实现)。
我的数据有大约 22 个特征和一个具有 2 个可能值的标称类:yes 或 no。
使用以下代码进行评估时:
Classifier model = (Classifier) weka.core.SerializationHelper.read(trainedModelDestination);
Evaluation evaluation = new Evaluation(trainingInstances);
evaluation.evaluateModel(model, testingInstances);
System.out.println("Number of correct predictions : "+evaluation.correct());
我得到所有预测正确。
但是,当我使用以下方法单独尝试这些测试用例时:
for(Instance i : testingInstances){
double predictedClassLabel = model.classifyInstance(i);
System.out.println("predictedClassLabel : "+predictedClassLabel);
}
我总是得到相同的输出,即 0.0。
为什么会这样?
【问题讨论】:
-
那是预测的类标签 0,也许你的测试实例只包含类标签 0,因此一切都是正确的。
-
不,我尝试了不同的测试用例,结果已知。还尝试了训练集中的实例。
-
可能是您的测试实例与训练实例完全不同。您是否尝试过在您的训练集上评估您的模型?
-
使用训练集进行评估可以达到 100% 的准确率。
-
在这种情况下,您的模型训练了您的数据集。请问你们的训练和测试数据有多大?
标签: java machine-learning classification weka decision-tree