gpt4 book ai didi

java - 将 Weka DecisionTree 从 Java API 导出到 XML 或 JSON

转载 作者:数据小太阳 更新时间:2023-10-29 02:40:55 26 4
gpt4 key购买 nike

我的任务是通过添加决策树的导出以供离线组件使用(最好是 JSON 格式,但 XML 也可以),用 Java 增强现有的 Weka 系统。

让我警告你,我是 Weka 的新手 :)

还没有找到一种方法来直接访问 J48 的根树(在类里面似乎是私有(private)的)——你知道一种方法吗?如果不是,我发现最接近的获取数据的方法有点老套:使用 J48.toString() 将树转储为字符串,然后将其转换回树结构,然后将其转换为JSON 字符串(YUK)。

看来这个用例并不少见,所以我想知道你们中是否有人已经解决了这个问题。 . .任何方向/建议表示赞赏。

谢谢!

最佳答案

ClassifierTree 中的graph() 方法给出了 Graphviz “点”文件中决策树的表示。

如果我们取 this example , 然后是代码

J48 g = (J48) models[0]; 
System.out.println(g.graph());

将返回:

digraph J48Tree {
N0 [label="outlook" ]
N0->N1 [label="= sunny"]
N1 [label="humidity" ]
N1->N2 [label="<= 75"]
N2 [label="yes (2.0)" shape=box style=filled ]
N1->N3 [label="> 75"]
N3 [label="no (3.0)" shape=box style=filled ]
N0->N4 [label="= overcast"]
N4 [label="yes (4.0)" shape=box style=filled ]
N0->N5 [label="= rainy"]
N5 [label="yes (4.0/1.0)" shape=box style=filled ]
}

对应这棵树:

enter image description here

回答你的问题

I haven’t found a way to get direct access to the J48’s Root Tree (appears to be private w/in the class)—are you aware of a way to get at it?

您可以像下面这样扩展 J48 并将您的分类器声明为 MyJ48 而不是 J48:

class MyJ48 extends J48{

public ClassifierTree getGraph(){
return m_root;
}

}

这样可以使用 getGraph() 方法访问 ClassifierTree。基于此,您可以模仿 ClassifierTree 类(参见 here)的 graph() 方法来生成您的 json

希望对你有帮助。

关于java - 将 Weka DecisionTree 从 Java API 导出到 XML 或 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20430096/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com