如何在 Java 中访问 Weka 生成的朴素贝叶斯树?

How can I access Weka produced Naive Bayes trees in Java?

根据我对朴素贝叶斯分类器的理解,会根据“证据”(训练集)为每个标签(或可能性)生成一棵树。使用这些树可以为未来的例子做出预测,例如实例是否可以归类为“异常”或“正常”。

weka 库中有没有办法让我直观地输出每个标签树?或者访问 Java 中的这些树?

谢谢

朴素贝叶斯不生成树,因此可能值得研究使用生成树的分类器,例如 J48。树分类器可以在 WEKA GUI 客户端的 weka/classifiers/trees/ 目录下找到。

朴素贝叶斯分类器的一个例子是:

而 J48 等基于树的分类器的示例是:

可以在 WEKA GUI 和使用 Java 中访问此树。如果使用 WEKA GUI,可以通过右键单击分类结果并按 Visualize tree *:

来可视化树

在 Java 中,可以通过打印分类器对象本身将树打印到控制台中:

    //Get File
    reader = new BufferedReader(new FileReader(path + "/ArffFile.arff"));

    //Get the data
    Instances data = new Instances(reader);
    reader.close();

    //Setting class attribute
    data.setClassIndex(data.numAttributes() - 1);

    //Make tree
    J48 tree = new J48();
    String[] options = new String[1];
    tree.buildClassifier(data);

    //Print tree
    System.out.println(tree);

*请注意,默认情况下它也会打印到分类器输出中window。