Weka API: How to obtain a joint probability, e.g., Pr(A=x, B=y), from a BayesNet obejct?
up vote
-1
down vote
favorite
I am using Weka Java API. I trained a Bayesnet on an Instances object (data set) with class (label) unspecified.
/**
* Initialization
*/
Instances data = ...;
BayesNet bn = new EditableBayesNet(data);
SearchAlgorithm learner = new TAN();
SimpleEstimator estimator = new SimpleEstimator();
/**
* Training
*/
bn.initStructure();
learner.buildStructure(bayesNetworkModel, data);
Suppose the Instances object data
has three attributes, A, B and C, and the dependency discovered is B->A, C->B.
The trained Bayesnet object bn
is not for classification (I did not specify the class attribute for data
), but I just want to calculate the joint probability of Pr(A=x, B=y). How do I get this probability from bn
?
As far as I know, the distributionForInstance
function of BayesNet
may be the closest thing to use. It returns the probability distribution of a given instance (in our case, the instances is (A=x, B=y)). To use it, I could create a new Instance
object testDataInstance
and set value A=x
and B=y
, and call distributionForInstance
with testDataInstance
.
/**
* Obtain Pr(A="x", B="y")
*/
Instance testDataInstance = new SparseInstance(3);
Instances testDataSet = new Instances(
bn.m_Instances);
testDataSet.clear();
testDataInstance.setValue(testDataSet.attribute("A"), "x");
testDataInstance.setValue(testDataSet.attribute("B"), "y");
testDataSet.add(testDataInstance);
bn.distributionForInstance(testDataSet.firstInstance());
However, to my knowledge, the probability distribution indicates probabilities of all possible values for the class attribute in the bayesnet. As I did not specify a class attribute for data
, it is unclear to me what the returned probability distribution means.
java machine-learning weka bayesian bayesian-networks
This question has an open bounty worth +50
reputation from Zhongjun 'Mark' Jin ending in 7 days.
This question has not received enough attention.
add a comment |
up vote
-1
down vote
favorite
I am using Weka Java API. I trained a Bayesnet on an Instances object (data set) with class (label) unspecified.
/**
* Initialization
*/
Instances data = ...;
BayesNet bn = new EditableBayesNet(data);
SearchAlgorithm learner = new TAN();
SimpleEstimator estimator = new SimpleEstimator();
/**
* Training
*/
bn.initStructure();
learner.buildStructure(bayesNetworkModel, data);
Suppose the Instances object data
has three attributes, A, B and C, and the dependency discovered is B->A, C->B.
The trained Bayesnet object bn
is not for classification (I did not specify the class attribute for data
), but I just want to calculate the joint probability of Pr(A=x, B=y). How do I get this probability from bn
?
As far as I know, the distributionForInstance
function of BayesNet
may be the closest thing to use. It returns the probability distribution of a given instance (in our case, the instances is (A=x, B=y)). To use it, I could create a new Instance
object testDataInstance
and set value A=x
and B=y
, and call distributionForInstance
with testDataInstance
.
/**
* Obtain Pr(A="x", B="y")
*/
Instance testDataInstance = new SparseInstance(3);
Instances testDataSet = new Instances(
bn.m_Instances);
testDataSet.clear();
testDataInstance.setValue(testDataSet.attribute("A"), "x");
testDataInstance.setValue(testDataSet.attribute("B"), "y");
testDataSet.add(testDataInstance);
bn.distributionForInstance(testDataSet.firstInstance());
However, to my knowledge, the probability distribution indicates probabilities of all possible values for the class attribute in the bayesnet. As I did not specify a class attribute for data
, it is unclear to me what the returned probability distribution means.
java machine-learning weka bayesian bayesian-networks
This question has an open bounty worth +50
reputation from Zhongjun 'Mark' Jin ending in 7 days.
This question has not received enough attention.
add a comment |
up vote
-1
down vote
favorite
up vote
-1
down vote
favorite
I am using Weka Java API. I trained a Bayesnet on an Instances object (data set) with class (label) unspecified.
/**
* Initialization
*/
Instances data = ...;
BayesNet bn = new EditableBayesNet(data);
SearchAlgorithm learner = new TAN();
SimpleEstimator estimator = new SimpleEstimator();
/**
* Training
*/
bn.initStructure();
learner.buildStructure(bayesNetworkModel, data);
Suppose the Instances object data
has three attributes, A, B and C, and the dependency discovered is B->A, C->B.
The trained Bayesnet object bn
is not for classification (I did not specify the class attribute for data
), but I just want to calculate the joint probability of Pr(A=x, B=y). How do I get this probability from bn
?
As far as I know, the distributionForInstance
function of BayesNet
may be the closest thing to use. It returns the probability distribution of a given instance (in our case, the instances is (A=x, B=y)). To use it, I could create a new Instance
object testDataInstance
and set value A=x
and B=y
, and call distributionForInstance
with testDataInstance
.
/**
* Obtain Pr(A="x", B="y")
*/
Instance testDataInstance = new SparseInstance(3);
Instances testDataSet = new Instances(
bn.m_Instances);
testDataSet.clear();
testDataInstance.setValue(testDataSet.attribute("A"), "x");
testDataInstance.setValue(testDataSet.attribute("B"), "y");
testDataSet.add(testDataInstance);
bn.distributionForInstance(testDataSet.firstInstance());
However, to my knowledge, the probability distribution indicates probabilities of all possible values for the class attribute in the bayesnet. As I did not specify a class attribute for data
, it is unclear to me what the returned probability distribution means.
java machine-learning weka bayesian bayesian-networks
I am using Weka Java API. I trained a Bayesnet on an Instances object (data set) with class (label) unspecified.
/**
* Initialization
*/
Instances data = ...;
BayesNet bn = new EditableBayesNet(data);
SearchAlgorithm learner = new TAN();
SimpleEstimator estimator = new SimpleEstimator();
/**
* Training
*/
bn.initStructure();
learner.buildStructure(bayesNetworkModel, data);
Suppose the Instances object data
has three attributes, A, B and C, and the dependency discovered is B->A, C->B.
The trained Bayesnet object bn
is not for classification (I did not specify the class attribute for data
), but I just want to calculate the joint probability of Pr(A=x, B=y). How do I get this probability from bn
?
As far as I know, the distributionForInstance
function of BayesNet
may be the closest thing to use. It returns the probability distribution of a given instance (in our case, the instances is (A=x, B=y)). To use it, I could create a new Instance
object testDataInstance
and set value A=x
and B=y
, and call distributionForInstance
with testDataInstance
.
/**
* Obtain Pr(A="x", B="y")
*/
Instance testDataInstance = new SparseInstance(3);
Instances testDataSet = new Instances(
bn.m_Instances);
testDataSet.clear();
testDataInstance.setValue(testDataSet.attribute("A"), "x");
testDataInstance.setValue(testDataSet.attribute("B"), "y");
testDataSet.add(testDataInstance);
bn.distributionForInstance(testDataSet.firstInstance());
However, to my knowledge, the probability distribution indicates probabilities of all possible values for the class attribute in the bayesnet. As I did not specify a class attribute for data
, it is unclear to me what the returned probability distribution means.
java machine-learning weka bayesian bayesian-networks
java machine-learning weka bayesian bayesian-networks
edited 12 hours ago
asked 2 days ago
Zhongjun 'Mark' Jin
8141227
8141227
This question has an open bounty worth +50
reputation from Zhongjun 'Mark' Jin ending in 7 days.
This question has not received enough attention.
This question has an open bounty worth +50
reputation from Zhongjun 'Mark' Jin ending in 7 days.
This question has not received enough attention.
add a comment |
add a comment |
active
oldest
votes
active
oldest
votes
active
oldest
votes
active
oldest
votes
active
oldest
votes
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53402674%2fweka-api-how-to-obtain-a-joint-probability-e-g-pra-x-b-y-from-a-bayesnet%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown