k Nearest Neighbor demo
This java applet lets you play with kNN classification.
Follow step 1 through 3, fill in the numbers and push the buttons.
Have fun!
Or if you want detailed instructions, here you are:
-
This is a binary classification problem defined on a N*N field. You
can specify N, the 'field size', in step 1.
-
Once you pick an N, you need to assign a true classification to each point
in the field. The applet does this for you automatically by creating
a random assignment with certain complexity. All you have to do is
to specify 'complexity' and press the 'Create Truth'
button in step 1. (the applet actually performs 'complexity' times of random
half-plane XOR operations) The true classification map will be displayed
on the lower left.
-
Now you can generate random samples. Specify the number of 'samples'
and press 'Generate Samples' in step 2. The applet uniformly
select the specified number of points as samples. (Note: our sampling is
noise-free) You can see the samples as circles and crosses on the
true classification map.
-
Finally you can perform kNN classification for each point in the field,
given the samples as training data. Specify 'kNN', the number
of nearest neighbors to consider, and press 'Classify' in step 3.
The classification result map will be displayed on the lower right.
The true error will be displayed to the right of the ''Classify' button.
(Note: if you specified an even number, there will be ties. We break
ties randomly.)
-
Each step can be repeated individually with different parameters.
For example, you can specify different k in step 3 while keeping
the true classification and samples fixed. Or you can compare different
sample sizes in step 2.
Here is the source code. If you have suggestions
or questions, please contact the author (zhuxj (at) cs.cmu.edu).
Jerry Zhu
2000/1/4