File: knn.ani.Rd

package info (click to toggle)
r-cran-animation 2.7%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 1,268 kB
  • sloc: javascript: 873; sh: 15; makefile: 2
file content (93 lines) | stat: -rw-r--r-- 3,012 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/knn.ani.R
\name{knn.ani}
\alias{knn.ani}
\title{Demonstration of the k-Nearest Neighbour classification}
\usage{
knn.ani(
  train,
  test,
  cl,
  k = 10,
  interact = FALSE,
  tt.col = c("blue", "red"),
  cl.pch = seq_along(unique(cl)),
  dist.lty = 2,
  dist.col = "gray",
  knn.col = "green",
  ...
)
}
\arguments{
\item{train}{matrix or data frame of training set cases containing only 2
columns}

\item{test}{matrix or data frame of test set cases. A vector will be
interpreted as a row vector for a single case. It should also contain only
2 columns. This data set will be \emph{ignored} if \code{interact = TRUE};
see \code{interact} below.}

\item{cl}{factor of true classifications of training set}

\item{k}{number of neighbours considered.}

\item{interact}{logical. If \code{TRUE}, the user will have to choose a test
set for himself using mouse click on the screen; otherwise compute kNN
classification based on argument \code{test}.}

\item{tt.col}{a vector of length 2 specifying the colors for the training
data and test data.}

\item{cl.pch}{a vector specifying symbols for each class}

\item{dist.lty, dist.col}{the line type and color to annotate the distances}

\item{knn.col}{the color to annotate the k-nearest neighbour points using a
polygon}

\item{...}{additional arguments to create the empty frame for the animation
(passed to \code{\link{plot.default}})}
}
\value{
A vector of class labels for the test set.
}
\description{
Demonstrate the process of k-Nearest Neighbour classification on the 2D
plane.
}
\details{
For each row of the test set, the \eqn{k} nearest (in Euclidean distance)
training set vectors are found, and the classification is decided by majority
vote, with ties broken at random. For a single test sample point, the basic
steps are:

\enumerate{ \item locate the test point \item compute the distances between
the test point and all points in the training set \item find \eqn{k} shortest
distances and the corresponding training set points \item vote for the result
(find the maximum in the table for the true classifications) }

As there are four steps in an iteration, the total number of animation frames
should be \code{4 * min(nrow(test), ani.options('nmax'))} at last.
}
\note{
There is a special restriction (only two columns) on the training and
  test data set just for sake of the convenience for making a scatterplot.
  This is only a rough demonstration; for practical applications, please
  refer to existing kNN functions such as \code{\link[class]{knn}} in
  \pkg{class}, etc.

  If either one of \code{train} and \code{test} is missing, there'll be
  random matrices prepared for them. (It's the same for \code{cl}.)
}
\references{
Examples at \url{https://yihui.org/animation/example/knn-ani/}

  Venables, W. N. and Ripley, B. D. (2002) \emph{Modern Applied
  Statistics with S}. Fourth edition. Springer.
}
\seealso{
\code{\link[class]{knn}}
}
\author{
Yihui Xie
}