\HeaderA{reduce.nn}{Reduce Training Set for a k-NN Classifier}{reduce.nn}
\keyword{classif}{reduce.nn}
\begin{Description}\relax
Reduce training set for a k-NN classifier. Used after \code{condense}.
\end{Description}
\begin{Usage}
\begin{verbatim}
reduce.nn(train, ind, class)
\end{verbatim}
\end{Usage}
\begin{Arguments}
\begin{ldescription}
\item[\code{train}] matrix for training set

\item[\code{ind}] Initial list of members of the training set (from \code{condense}).

\item[\code{class}] vector of classifications for test set

\end{ldescription}
\end{Arguments}
\begin{Details}\relax
All the members of the training set are tried in random order.
Any which when dropped do not cause any members of the training set to
be wrongly classified are dropped.
\end{Details}
\begin{Value}
index vector of cases to be retained.
\end{Value}
\begin{References}\relax
Gates, G.W. (1972) The reduced nearest neighbor rule.
\emph{IEEE Trans. Information Theory}
\bold{IT-18}, 431--432.

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{\LinkA{condense}{condense}}, \code{\LinkA{multiedit}{multiedit}}
\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)))
keep <- condense(train, cl)
knn(train[keep,], test, cl[keep])
keep2 <- reduce.nn(train, keep, cl)
knn(train[keep2,], test, cl[keep2])
\end{ExampleCode}
\end{Examples}

