Weka:为什么getMargin返回全零?

问题描述 投票:0回答:1

我正在使用Weka Java API。我在Instances对象(数据集)data上训练了一个Bayesnet。

/**
 * Initialization
 */
Instances data = ...;
BayesNet bn = new EditableBayesNet(data);
SearchAlgorithm learner = new TAN();
SimpleEstimator estimator = new SimpleEstimator();
/**
 * Training
 */
bn.initStructure();
learner.buildStructure(bn, data);
estimator.estimateCPTs(bn);

qazxsw poi返回节点的边缘分布。理想情况下,假设节点qazxsw poi有3个可能的值,并且其节点索引为0.那么,getMargin应返回类似A的内容。

但是,就我而言,当我使用以下代码打印所有节点的边缘分布时。

bn.getMargin(0)

它回来了

[0.3, 0.4, 0.3]

有人之前已经看过这个或者可能会给我一些提示,为什么会发生这种情况?

我的数据是名义上的,大多数列都有很多类/值。

java machine-learning weka bayesian bayesian-networks
1个回答
0
投票

我想我在GUI中看到过这样的东西。当我有MaxnrofParents = 2时,我可以看到贝叶斯编辑器中的边距,但如果我使用MaxnrofParents更大的东西,边距没有显示任何东西。

© www.soinside.com 2019 - 2024. All rights reserved.