由于本人也是初学者,有错误请各位提出,大家一起学习。
原始形式代码:
1 package perceptron; 2 3 public class yuanshi { 4 public static void main(String[] args){ 5 int[][ ]x = {{3,3,1},{4,3,1},{1,1,-1}}; 6 int[] w = {0,0}; 7 select(x,w,0); 8 } 9 10 private static void select(int[][] x, int[] w, int b) { 11 int i = 0; 12 while(i<x.length){ 13 if(x[i][2]*(w[0]*x[i][0]+w[1]*x[i][1]+b) <= 0){ 14 w[0] += 1 * x[i][2] * x[i][0]; 15 w[1] += 1 * x[i][2] * x[i][1]; 16 b += 1 * x[i][2]; 17 i = 0; 18 } 19 else{ 20 i++; 21 } 22 } 23 System.out.println("w的值:" + w[0] + " " + w[1] + ",b的值" + b ); 24 } 25 }
对偶形式代码:
1 package perceptron; 2 3 public class duiou { 4 public static void main(String[] args){ 5 int[][]x = {{3,3,1},{4,3,1},{1,1,-1}}; 6 int[] a = {0,0,0}; 7 int b = 0; 8 int[][] gram = {{18,21,6},{21,25,7},{6,7,2}}; 9 select(x,a,b,gram); 10 } 11 12 private static void select(int[][] x, int[] a, int b, int[][] gram) { 13 int i = 0; 14 while(i<x.length){ 15 if(x[i][2]*((a[0]*x[0][2]*gram[0][i]+a[1]*x[1][2]*gram[1][i]+a[2]*x[2][2]*gram[2][i])+b) <= 0){ 16 a[i] += 1; 17 b += x[i][2]; 18 i = 0; 19 } 20 else{ 21 i++; 22 } 23 } 24 System.out.println("a的值:" + a[0] + " " + a[1] + " " + a[2] + ",b的值" + b ); 25 } 26 }