# Inference

### Bayesian Network for Inference

Program that infers probabilities of events given evidence variables in a domain of sample data given as input

## About the inference project

This project, written in Java, is an implementation of various algorithms for exact and approximate inference in Bayesian networks. It includes an implementation of the inference by enumeration algorithm for exact inference, which allows for the computation of the exact probability of a query given evidence variables. In addition to that, the program includes an implementation of the rejection sampling and likelihood weighting algorithms for approximate inference, which allows for the estimation of probabilities when exact inference is not feasible. The project also features a method for reading Bayesian networks from XMLBIF files. This functionality enables the program to read in Bayesian networks and use them to perform inference. The program can also infer probabilities of events given evidence variables in a domain of sample data provided as input. This means that the program can determine the probability of a particular event happening, given some evidence variables. For example, if the data represents the probability of rain in a geographical area, the program can be used to determine the probability of rain on a Monday, given that it rained on Sunday. The program is designed to handle a variety of sample data representing different domains, evidence, and a query variable. Given a set of sample data, evidence, and a query variable, the program will return the probability of the queried variable. This project was definitely an eye-opener to the power of AI. It allowed me to understand the power of AI in inferring events, which is the closest thing we have to foresight.

Please note that the code for this project is not available online, due to the updated University of Rochester Academic Honesty policy