//////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////// // // Kohonen Feature Map applet // // Written by Steve Bohrer Last Updated - 6/24/86 // //////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////// import java.awt.*; import java.applet.*; import KNN; public class KNNdemo extends Applet { Button single; // Single pass Button full; // Full training pass Button resetData; // Calculate new random data Button resetClusters; // Calculate new random clusters Button paintGrid; // Draw cluster interconnections Choice neighborhood; // Neighborhood Choice lr; // Learning rate KNN network; // Initialization routine public void init() { Graphics graphics = getGraphics(); graphics.setFont(new Font("Helvetica",Font.PLAIN,12)); // Create KNN network network = new KNN(graphics, size()); // Create main applet viewing area setBackground(Color.white); setLayout(new FlowLayout()); add(new Label("Neighborhood :")); add(neighborhood = new Choice()); neighborhood.addItem("0"); neighborhood.addItem("1"); neighborhood.addItem("2"); neighborhood.addItem("3"); neighborhood.addItem("4"); neighborhood.addItem("5"); neighborhood.select("5"); add(new Label("Learning Rate :")); add(lr = new Choice()); lr.addItem(".1"); lr.addItem(".2"); lr.addItem(".3"); lr.addItem(".4"); lr.addItem(".5"); lr.addItem(".6"); lr.addItem(".7"); lr.addItem(".8"); lr.addItem(".9"); lr.select(".3"); add(single = new Button("Single Pass")); add(full = new Button("Full Train")); add(resetData = new Button("Reset Data")); add(resetClusters = new Button("Randomize Centroids")); add(paintGrid = new Button("Paint Centroid Grid")); show(); } public void paint(Graphics g) { network.Paint(); } public boolean action (Event e, Object arg) { Dimension r = size(); System.out.println(((Button)e.target).getLabel()); if (e.target == resetData) { network.ResetData(); repaint(); return true; } else if (e.target == single) { network.SinglePass(neighborhood.getSelectedIndex(), (Double.valueOf(lr.getSelectedItem())).doubleValue()); return true; } else if (e.target == full) { network.Train((Double.valueOf(lr.getSelectedItem())).doubleValue()); return true; } else if (e.target == resetClusters) { network.RandomizeClusters(); repaint(); return true; } else if (e.target == paintGrid) { network.PaintGrid(); return true; } else if (e.target == neighborhood) { return true; } else if (e.target == lr) { return true; } return false; } }