package dkohl.bayes.example; import org.junit.Test; import static org.hamcrest.core.IsEqual.equalTo; import static org.junit.Assert.assertThat; import dkohl.bayes.bayesnet.BayesNet; import dkohl.bayes.estimation.MaximumLikelihoodEstimation; import dkohl.bayes.example.builders.EstimateSprinklerNetBuilderTable; import dkohl.bayes.probability.distribution.ProbabilityTable; import dkohl.bayes.statistic.DataSet; /** * Parameter estimation for the sprinkler net example * * http://www.cs.ubc.ca/~murphyk/Bayes/bnintro.html * * @author Daniel Kohlsdorf */ public class SprinklerNetExampleTest { @Test public void testSprinklerNetExample() { BayesNet net = EstimateSprinklerNetBuilderTable.sprinkler(); DataSet data = EstimateSprinklerNetBuilderTable.dataSet(); MaximumLikelihoodEstimation.estimate(data, net, EstimateSprinklerNetBuilderTable.GRASS_WET); /** * Output PDF for grass is wet */ ProbabilityTable table = (ProbabilityTable) net.getNodes().get( EstimateSprinklerNetBuilderTable.GRASS_WET); for (String name : table.getNames()) { System.out.print(name + " | "); } System.out.println(); for (String key : table.getAssignments().keySet()) { System.out.println(key + " " + table.getAssignments().get(key).getProbability()); if ("false;false;true;".equals(key)) { assertThat(table.getAssignments().get(key).getProbability(), equalTo(0.0)); } if ("true;false;true;".equals(key)) { assertThat(table.getAssignments().get(key).getProbability(), equalTo(0.9)); } } } }