From 1795385d3fac0709c9bac9bed9c130d2802418ca Mon Sep 17 00:00:00 2001 From: linlin Date: Tue, 6 Oct 2020 17:21:50 +0200 Subject: [PATCH] New translations svm_toy.java (Chinese Simplified) --- .../gedlib/lib/libsvm.3.22/java/svm_toy.java | 502 +++++++++++++++++++++ 1 file changed, 502 insertions(+) create mode 100644 lang/zh/gklearn/gedlib/lib/libsvm.3.22/java/svm_toy.java diff --git a/lang/zh/gklearn/gedlib/lib/libsvm.3.22/java/svm_toy.java b/lang/zh/gklearn/gedlib/lib/libsvm.3.22/java/svm_toy.java new file mode 100644 index 0000000..c4bd503 --- /dev/null +++ b/lang/zh/gklearn/gedlib/lib/libsvm.3.22/java/svm_toy.java @@ -0,0 +1,502 @@ +import libsvm.*; +import java.applet.*; +import java.awt.*; +import java.util.*; +import java.awt.event.*; +import java.io.*; + +public class svm_toy extends Applet { + + static final String DEFAULT_PARAM="-t 2 -c 100"; + int XLEN; + int YLEN; + + // off-screen buffer + + Image buffer; + Graphics buffer_gc; + + // pre-allocated colors + + final static Color colors[] = + { + new Color(0,0,0), + new Color(0,120,120), + new Color(120,120,0), + new Color(120,0,120), + new Color(0,200,200), + new Color(200,200,0), + new Color(200,0,200) + }; + + class point { + point(double x, double y, byte value) + { + this.x = x; + this.y = y; + this.value = value; + } + double x, y; + byte value; + } + + Vector point_list = new Vector(); + byte current_value = 1; + + public void init() + { + setSize(getSize()); + + final Button button_change = new Button("Change"); + Button button_run = new Button("Run"); + Button button_clear = new Button("Clear"); + Button button_save = new Button("Save"); + Button button_load = new Button("Load"); + final TextField input_line = new TextField(DEFAULT_PARAM); + + BorderLayout layout = new BorderLayout(); + this.setLayout(layout); + + Panel p = new Panel(); + GridBagLayout gridbag = new GridBagLayout(); + p.setLayout(gridbag); + + GridBagConstraints c = new GridBagConstraints(); + c.fill = GridBagConstraints.HORIZONTAL; + c.weightx = 1; + c.gridwidth = 1; + gridbag.setConstraints(button_change,c); + gridbag.setConstraints(button_run,c); + gridbag.setConstraints(button_clear,c); + gridbag.setConstraints(button_save,c); + gridbag.setConstraints(button_load,c); + c.weightx = 5; + c.gridwidth = 5; + gridbag.setConstraints(input_line,c); + + button_change.setBackground(colors[current_value]); + + p.add(button_change); + p.add(button_run); + p.add(button_clear); + p.add(button_save); + p.add(button_load); + p.add(input_line); + this.add(p,BorderLayout.SOUTH); + + button_change.addActionListener(new ActionListener() + { public void actionPerformed (ActionEvent e) + { button_change_clicked(); button_change.setBackground(colors[current_value]); }}); + + button_run.addActionListener(new ActionListener() + { public void actionPerformed (ActionEvent e) + { button_run_clicked(input_line.getText()); }}); + + button_clear.addActionListener(new ActionListener() + { public void actionPerformed (ActionEvent e) + { button_clear_clicked(); }}); + + button_save.addActionListener(new ActionListener() + { public void actionPerformed (ActionEvent e) + { button_save_clicked(input_line.getText()); }}); + + button_load.addActionListener(new ActionListener() + { public void actionPerformed (ActionEvent e) + { button_load_clicked(); }}); + + input_line.addActionListener(new ActionListener() + { public void actionPerformed (ActionEvent e) + { button_run_clicked(input_line.getText()); }}); + + this.enableEvents(AWTEvent.MOUSE_EVENT_MASK); + } + + void draw_point(point p) + { + Color c = colors[p.value+3]; + + Graphics window_gc = getGraphics(); + buffer_gc.setColor(c); + buffer_gc.fillRect((int)(p.x*XLEN),(int)(p.y*YLEN),4,4); + window_gc.setColor(c); + window_gc.fillRect((int)(p.x*XLEN),(int)(p.y*YLEN),4,4); + } + + void clear_all() + { + point_list.removeAllElements(); + if(buffer != null) + { + buffer_gc.setColor(colors[0]); + buffer_gc.fillRect(0,0,XLEN,YLEN); + } + repaint(); + } + + void draw_all_points() + { + int n = point_list.size(); + for(int i=0;i 3) current_value = 1; + } + + private static double atof(String s) + { + return Double.valueOf(s).doubleValue(); + } + + private static int atoi(String s) + { + return Integer.parseInt(s); + } + + void button_run_clicked(String args) + { + // guard + if(point_list.isEmpty()) return; + + svm_parameter param = new svm_parameter(); + + // default values + param.svm_type = svm_parameter.C_SVC; + param.kernel_type = svm_parameter.RBF; + param.degree = 3; + param.gamma = 0; + param.coef0 = 0; + param.nu = 0.5; + param.cache_size = 40; + param.C = 1; + param.eps = 1e-3; + param.p = 0.1; + param.shrinking = 1; + param.probability = 0; + param.nr_weight = 0; + param.weight_label = new int[0]; + param.weight = new double[0]; + + // parse options + StringTokenizer st = new StringTokenizer(args); + String[] argv = new String[st.countTokens()]; + for(int i=0;i=argv.length) + { + System.err.print("unknown option\n"); + break; + } + switch(argv[i-1].charAt(1)) + { + case 's': + param.svm_type = atoi(argv[i]); + break; + case 't': + param.kernel_type = atoi(argv[i]); + break; + case 'd': + param.degree = atoi(argv[i]); + break; + case 'g': + param.gamma = atof(argv[i]); + break; + case 'r': + param.coef0 = atof(argv[i]); + break; + case 'n': + param.nu = atof(argv[i]); + break; + case 'm': + param.cache_size = atof(argv[i]); + break; + case 'c': + param.C = atof(argv[i]); + break; + case 'e': + param.eps = atof(argv[i]); + break; + case 'p': + param.p = atof(argv[i]); + break; + case 'h': + param.shrinking = atoi(argv[i]); + break; + case 'b': + param.probability = atoi(argv[i]); + break; + case 'w': + ++param.nr_weight; + { + int[] old = param.weight_label; + param.weight_label = new int[param.nr_weight]; + System.arraycopy(old,0,param.weight_label,0,param.nr_weight-1); + } + + { + double[] old = param.weight; + param.weight = new double[param.nr_weight]; + System.arraycopy(old,0,param.weight,0,param.nr_weight-1); + } + + param.weight_label[param.nr_weight-1] = atoi(argv[i-1].substring(2)); + param.weight[param.nr_weight-1] = atof(argv[i]); + break; + default: + System.err.print("unknown option\n"); + } + } + + // build problem + svm_problem prob = new svm_problem(); + prob.l = point_list.size(); + prob.y = new double[prob.l]; + + if(param.kernel_type == svm_parameter.PRECOMPUTED) + { + } + else if(param.svm_type == svm_parameter.EPSILON_SVR || + param.svm_type == svm_parameter.NU_SVR) + { + if(param.gamma == 0) param.gamma = 1; + prob.x = new svm_node[prob.l][1]; + for(int i=0;i= XLEN || e.getY() >= YLEN) return; + point p = new point((double)e.getX()/XLEN, + (double)e.getY()/YLEN, + current_value); + point_list.addElement(p); + draw_point(p); + } + } + + public void paint(Graphics g) + { + // create buffer first time + if(buffer == null) { + buffer = this.createImage(XLEN,YLEN); + buffer_gc = buffer.getGraphics(); + buffer_gc.setColor(colors[0]); + buffer_gc.fillRect(0,0,XLEN,YLEN); + } + g.drawImage(buffer,0,0,this); + } + + public Dimension getPreferredSize() { return new Dimension(XLEN,YLEN+50); } + + public void setSize(Dimension d) { setSize(d.width,d.height); } + public void setSize(int w,int h) { + super.setSize(w,h); + XLEN = w; + YLEN = h-50; + clear_all(); + } + + public static void main(String[] argv) + { + new AppletFrame("svm_toy",new svm_toy(),500,500+50); + } +} + +class AppletFrame extends Frame { + AppletFrame(String title, Applet applet, int width, int height) + { + super(title); + this.addWindowListener(new WindowAdapter() { + public void windowClosing(WindowEvent e) { + System.exit(0); + } + }); + applet.init(); + applet.setSize(width,height); + applet.start(); + this.add(applet); + this.pack(); + this.setVisible(true); + } +}