\Header{knn}{k-Nearest Neighbour Classification}
\keyword{classif}{knn}
\begin{Description}\relax
k-nearest neighbour classification for test set from training set. For
each row of the test set, the \code{k} nearest (in Euclidean distance)
training set vectors are found, and the classification is decided by
majority vote, with ties broken at random. If there are ties for the
\code{k}th nearest vector, all candidates are included in the vote.
\end{Description}
\begin{Usage}
\begin{verbatim}
knn(train, test, cl, k = 1, l = 0, prob = FALSE, use.all = TRUE)
\end{verbatim}
\end{Usage}
\begin{Arguments}
\begin{ldescription}
\item[\code{train}] matrix or data frame of training set cases.

\item[\code{test}] matrix or data frame of test set cases. A vector will be interpreted
as a row vector for a single case.

\item[\code{cl}] factor of true classifications of training set

\item[\code{k}] number of neighbours considered.

\item[\code{l}] minimum vote for definite decision, otherwise \code{doubt}. (More
precisely, less than \code{k-l} dissenting votes are allowed, even if \code{k}
is increased by ties.)

\item[\code{prob}] If this is true, the proportion of the votes for the winning class
are returned as attribute \code{prob}.

\item[\code{use.all}] controls handling of ties. If true, all distances equal to the \code{k}th
largest are included. If false, a random selection of distances
equal to the \code{k}th is chosen to use exactly \code{k} neighbours.

\end{ldescription}
\end{Arguments}
\begin{Value}
factor of classifications of test set. \code{doubt} will be returned as \code{NA}.\end{Value}
\begin{References}\relax
Ripley, B. D. (1996)
\emph{Pattern Recognition and Neural Networks.} Cambridge.

Venables, W. N. and Ripley, B. D. (2002)
\emph{Modern Applied Statistics with S.} Fourth edition.  Springer.\end{References}
\begin{SeeAlso}\relax
\code{\Link{knn1}}, \code{\Link{knn.cv}}
\end{SeeAlso}
\begin{Examples}
\begin{ExampleCode}
data(iris3)
train <- rbind(iris3[1:25,,1], iris3[1:25,,2], iris3[1:25,,3])
test <- rbind(iris3[26:50,,1], iris3[26:50,,2], iris3[26:50,,3])
cl <- factor(c(rep("s",25), rep("c",25), rep("v",25)))
knn(train, test, cl, k = 3, prob=TRUE)
attributes(.Last.value)
\end{ExampleCode}
\end{Examples}

