51 lines
1.5 KiB
Java
51 lines
1.5 KiB
Java
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));
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|