Weka J-48决定树未完成

时间:2014-11-03 09:08:09

标签: java weka decision-tree

我使用多属性数据集进行分类。我在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获取数据集中的所有属性?我做错了什么?

1 个答案:

答案 0 :(得分:1)

您需要设置一个参数,该参数称为修剪或非修剪。修剪意味着树只显示决策树的最重要的叶子。 non-pruned意味着它显示决策树中的每个变量。在这里你只是使用修剪过的树。如果你想要完整的树集

pruned = "False"