This lecture builds on top of the Bayesian classifier that we developed last time. Specifically we build an expectation-maximization (EM) algorithm that locally maximizes the likelihood function. We go over an improved python implementation from the last lecture where we reduce the size of training set dramatically and measure the convergence of EM. This shows that using the testing data for improving the model greatly helps in improving the accuracy of the algorithm.