||k-Nearest Neighbor (KNN) is a popular non-parametric classifier.
To predict the class of a new point, we find the k nearest points, and
use their known class values to predict the unknown class of the new point.
In doing so, we have to choose some distance function to determine how "near"
two points are to each other. The objective of this project is to learn the
appropriate distance function from the data as well. We consider a class of
distance functions with adjustable parameters, and try to determine the parameter
values that give the best results in prediction. The algorithm is implemented in the
R language, and experimentally tested on data sets from the UCI Machine Learning repository.