ANNz2, a newer implementation of ANNz (ascl:1209.009), utilizes multiple machine learning methods such as artificial neural networks, boosted decision/regression trees and k-nearest neighbors to measure photo-zs based on limited spectral data. The code dynamically optimizes the performance of the photo-z estimation and properly derives the associated uncertainties. In addition to single-value solutions, ANNz2 also generates full probability density functions (PDFs) in two different ways. In addition, estimators are incorporated to mitigate possible problems of spectroscopic training samples which are not representative or are incomplete. ANNz2 is also adapted to provide optimized solutions to general classification problems, such as star/galaxy separation.