content: package eu.amidst.core.examples.learning;
  
  
  import eu.amidst.core.datastream.DataInstance;
  import eu.amidst.core.datastream.DataStream;
  import eu.amidst.core.io.DataStreamLoader;
  import eu.amidst.core.learning.parametric.ParallelMaximumLikelihood;
  import eu.amidst.core.models.BayesianNetwork;
  
  /**
   *
   * This example shows how to learn in parallel the parameters of a Bayesian network from a stream of data using maximum
   * likelihood.
   *
   * Created by andresmasegosa on 18/6/15.
   */
  public class ParallelMaximumLikelihoodExample {
  
  
      public static void main(String[] args) throws Exception {
  
          //We can open the data stream using the static class DataStreamLoader
          DataStream<DataInstance> data = DataStreamLoader.open("datasets/simulated/WasteIncineratorSample.arff");
  
          //We create a ParallelMaximumLikelihood object with the MaximumLikehood builder
          ParallelMaximumLikelihood parameterLearningAlgorithm = new ParallelMaximumLikelihood();
  
          //We activate the parallel mode.
          parameterLearningAlgorithm.setParallelMode(true);
  
          //We desactivate the debug mode.
          parameterLearningAlgorithm.setDebug(false);
  
          //We fix the DAG structure
          parameterLearningAlgorithm.setDAG(MaximimumLikelihoodByBatchExample.getNaiveBayesStructure(data, 0));
  
          //We set the batch size which will be employed to learn the model in parallel
          parameterLearningAlgorithm.setWindowsSize(100);
  
          //We set the data which is going to be used for leaning the parameters
          parameterLearningAlgorithm.setDataStream(data);
  
          //We perform the learning
          parameterLearningAlgorithm.runLearning();
  
          //And we get the model
          BayesianNetwork bnModel = parameterLearningAlgorithm.getLearntBayesianNetwork();
  
          //We print the model
          System.out.println(bnModel.toString());
  
      }
  
  }
  