Package weka.classifiers.bayes.net.estimate

Source Code of weka.classifiers.bayes.net.estimate.DiscreteEstimatorFullBayes

/*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/

/*
* DiscreteEstimatorFullBayes.java
*
*/
package weka.classifiers.bayes.net.estimate;

import weka.core.RevisionUtils;
import weka.estimators.DiscreteEstimator;

/**
* Symbolic probability estimator based on symbol counts and a prior.
* @author Remco Bouckaert (rrb@xm.co.nz)
* @version $Revision: 1.3 $
*/
public class DiscreteEstimatorFullBayes
  extends DiscreteEstimatorBayes {

  /** for serialization */
  static final long serialVersionUID = 6774941981423312133L;
 
  /**
   * Constructor
   *
   * @param nSymbols the number of possible symbols (remember to include 0)
   * @param w1
   * @param w2
   * @param EmptyDist
   * @param ClassDist
   * @param fPrior
   */
  public DiscreteEstimatorFullBayes(int nSymbols,
    double w1, double w2,
    DiscreteEstimatorBayes EmptyDist,
    DiscreteEstimatorBayes ClassDist,
    double fPrior) {
   
    super(nSymbols, fPrior);

    m_SumOfCounts = 0.0;
    for (int iSymbol = 0; iSymbol < m_nSymbols; iSymbol++) {
      double p1 = EmptyDist.getProbability(iSymbol);
      double p2 = ClassDist.getProbability(iSymbol);
      m_Counts[iSymbol] = w1 * p1 + w2 * p2;
      m_SumOfCounts += m_Counts[iSymbol];
    }
  } // DiscreteEstimatorFullBayes
 
  /**
   * Returns the revision string.
   *
   * @return    the revision
   */
  public String getRevision() {
    return RevisionUtils.extract("$Revision: 1.3 $");
  }

  /**
   * Main method for testing this class.
   *
   * @param argv should contain a sequence of integers which
   * will be treated as symbolic.
   */
  public static void main(String[] argv) {
    try {
      if (argv.length == 0) {
  System.out.println("Please specify a set of instances.");

  return;
      }

      int current = Integer.parseInt(argv[0]);
      int max = current;

      for (int i = 1; i < argv.length; i++) {
  current = Integer.parseInt(argv[i]);

  if (current > max) {
    max = current;
  }
      }

      DiscreteEstimator newEst = new DiscreteEstimator(max + 1, true);

      for (int i = 0; i < argv.length; i++) {
  current = Integer.parseInt(argv[i]);

  System.out.println(newEst);
  System.out.println("Prediction for " + current + " = "
         + newEst.getProbability(current));
  newEst.addValue(current, 1);
      }
    } catch (Exception e) {
      System.out.println(e.getMessage());
    }
  }    // main
// class DiscreteEstimatorFullBayes



TOP

Related Classes of weka.classifiers.bayes.net.estimate.DiscreteEstimatorFullBayes

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.