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
1












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.










share|improve this question

















This question has an open bounty worth +50
reputation from Zhongjun 'Mark' Jin ending in 7 days.


This question has not received enough attention.




















    up vote
    -1
    down vote

    favorite
    1












    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.










    share|improve this question

















    This question has an open bounty worth +50
    reputation from Zhongjun 'Mark' Jin ending in 7 days.


    This question has not received enough attention.


















      up vote
      -1
      down vote

      favorite
      1









      up vote
      -1
      down vote

      favorite
      1






      1





      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.










      share|improve this question















      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






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      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.































          active

          oldest

          votes











          Your Answer






          StackExchange.ifUsing("editor", function () {
          StackExchange.using("externalEditor", function () {
          StackExchange.using("snippets", function () {
          StackExchange.snippets.init();
          });
          });
          }, "code-snippets");

          StackExchange.ready(function() {
          var channelOptions = {
          tags: "".split(" "),
          id: "1"
          };
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function() {
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled) {
          StackExchange.using("snippets", function() {
          createEditor();
          });
          }
          else {
          createEditor();
          }
          });

          function createEditor() {
          StackExchange.prepareEditor({
          heartbeatType: 'answer',
          convertImagesToLinks: true,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: 10,
          bindNavPrevention: true,
          postfix: "",
          imageUploader: {
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          },
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          });


          }
          });














           

          draft saved


          draft discarded


















          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






























          active

          oldest

          votes













          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes
















           

          draft saved


          draft discarded



















































           


          draft saved


          draft discarded














          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





















































          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







          Popular posts from this blog

          Berounka

          Different font size/position of beamer's navigation symbols template's content depending on regular/plain...

          Sphinx de Gizeh