Java | Approximate Probabilistic Inference | Rejection sampling and Likelihood weighting approximate

Introduction

The goal of this assignment is to implement in Java the rejection sampling and likelihood weighting approximate probabilistic inference approaches. Your software should be able to read a given Bayesian network consisting of binary variables from a text file in the following format:

Cloudy, 0.5
Sprinkler, Cloudy, 0.1, 0.5
Rain, Cloudy, 0.8, 0.2
WetGrass, Sprinkler, Rain, 0.99, 0.09, 0.09, 0

Each line is a comma separated list of tokens that correspond to a variable of the Bayesian network. The name of the variable is given in the first token. Subsequent string tokens correspond to the parents of this variable. Subsequent numeric tokens give the probability that the variable of this line is true for all value combinations of its parents. In the above example, which corresponds to the sprinkler network from the book, for variable “Sprinkler”, the parent is the variable “Cloudy”, and the probability of Sprinkler=true is 0.1 if Cloudy=true and 0.5 if Cloudy=false.

Your software should be able to read queries from the console in the following format:

P(Sprinkler|Wetgrass=true,Cloudy=false)

Your software should also ask for the number of samples to be produced and the method of approximate inference to use, and then output the probability estimate for the query.

Output Screenshots
Powered by