\Header{lvq2}{Learning Vector Quantization 2.1}
\keyword{classif}{lvq2}
\begin{Description}\relax
Moves examples in a codebook to better represent the training set.\end{Description}
\begin{Usage}
\begin{verbatim}
lvq2(x, cl, codebk, niter=100 * nrow(codebk$x), alpha=0.03, win=0.3)
\end{verbatim}
\end{Usage}
\begin{Arguments}
\begin{ldescription}
\item[\code{x}] a matrix or data frame of examples

\item[\code{cl}] a vector or factor of classifications for the examples

\item[\code{codebk}] a codebook

\item[\code{niter}] number of iterations

\item[\code{alpha}] constant for training

\item[\code{win}] a tolerance for the closeness of the two nearest vectors.

\end{ldescription}
\end{Arguments}
\begin{Details}\relax
Selects \code{niter} examples at random  with replacement, and adjusts the nearest
two examples in the codebook if one is correct and the other incorrect.\end{Details}
\begin{Value}
A codebook, represented as a list with components \code{x} and \code{cl}
giving the examples and classes.\end{Value}
\begin{References}\relax
Kohonen, T. (1990) The self-organizing map.  
\emph{Proc. IEEE}
\bold{78}, 1464--1480.


Kohonen, T. (1995)
\emph{Self-Organizing Maps.}
Springer, Berlin.\end{References}
\begin{SeeAlso}\relax
\code{\Link{lvqinit}}, \code{\Link{lvq1}}, \code{\Link{olvq1}}, \code{\Link{lvq3}}, \code{\Link{lvqtest}}\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)))
cd <- lvqinit(train, cl, 10)
lvqtest(cd, train)
cd0 <- olvq1(train, cl, cd)
lvqtest(cd0, train)
cd2 <- lvq2(train, cl, cd0)
lvqtest(cd2, train)
\end{ExampleCode}
\end{Examples}

