我使用多属性数据集进行分类。我在java上使用WEKA API。数据集包含分类和数字变量。当我在weka-GUI上运行数据集时,我得到了更好的结果,在26个大小的树中有16个叶子。但是当我使用java代码执行相同操作时,我只能在5个大小的树中获得3个叶子。这是我的java代码
public static Evaluation classify(Classifier model,
Instances trainingSet, Instances testingSet) throws Exception {
//return the classification model after training with train set and test with test set
Evaluation evaluation = new Evaluation(trainingSet);
model.buildClassifier(trainingSet);
evaluation.evaluateModel(model, testingSet);
//System.out.println(model);
return evaluation;
}
Classifier models = new J48(); // a decision tree
models.setOptions(optionsj);
FastVector predictions = new FastVector();
// For each training-testing split pair, train and test the classifier
for (int i = 0; i < trainingSplits.length; i++) {
Evaluation validation = classify(models, trainingSplits[i], testingSplits[i]);
predictions.appendElements(validation.predictions());
System.out.println(validation.toSummaryString("\nResults\n======\n", false));
}
System.out.println(models.toString());
如何确保j-48获取数据集中的所有属性?我做错了什么?
答案 0 :(得分:1)
您需要设置一个参数,该参数称为修剪或非修剪。修剪意味着树只显示决策树的最重要的叶子。 non-pruned意味着它显示决策树中的每个变量。在这里你只是使用修剪过的树。如果你想要完整的树集
pruned = "False"