Java 如何使用WEKAAPI学习贝叶斯网络(结构和参数)?

Java 如何使用WEKAAPI学习贝叶斯网络(结构和参数)?,java,api,weka,bayesian-networks,Java,Api,Weka,Bayesian Networks,有人知道使用WEKAAPI从数据中学习贝叶斯网络的“正确”程序吗?我在WEKA文档中找不到好的说明 根据文档和每个函数“应该”做的事情,我认为这会起作用: Instances ins = DataSource.read( filename ); ins.setClassIndex(0); K2 learner = new K2(); MultiNomialBMAEstimator estimator = new MultiNomialBMAEstimator(); estimator.set

有人知道使用WEKAAPI从数据中学习贝叶斯网络的“正确”程序吗?我在WEKA文档中找不到好的说明

根据文档和每个函数“应该”做的事情,我认为这会起作用:

Instances ins = DataSource.read( filename );
ins.setClassIndex(0);

K2 learner = new K2();

MultiNomialBMAEstimator estimator = new MultiNomialBMAEstimator();
estimator.setUseK2Prior(true);

EditableBayesNet bn = new EditableBayesNet( ins );
bn.initStructure();

learner.buildStructure(bn, ins);
estimator.estimateCPTs(bn);

但事实并非如此。我已经尝试过这个和其他变体,我一直在WEKA代码中的某个地方获得
ArrayIndexOutOfBoundsException
NullPointerException
,那么我缺少什么呢?

它对我很有用。我尝试使用以下数据集:

@relation test

@attribute x {0,1}
@attribute y {0,1,2}
@attribute z {0,1}

@data
0,1,0
1,0,1
1,1,1
1,2,1
0,0,0
我要提到的是,当您的目标属性不是标称属性(例如数字)时,会出现异常。当所有属性都是名义属性时,贝叶斯网络工作得更好。如果将target属性更改为numeric,则会得到
NullPointerException
ArrayIndexOutOfBoundsException
。特别是,在以下行引发此异常:

EditableBayesNet bn = new EditableBayesNet(ins);

您应该首先离散化您的目标类。

我正在寻找资源以开始使用贝叶斯网络。我们来看看您提到的WEKAAPI。WEKAGUI本身是否使用该API?如果是这样的话,你可以举个例子。你也可以浏览一下源代码,看看其中是否有意义。我不知道以前出了什么问题,但现在它对我也适用。