java 感知机原始形式和对偶形式

 由于本人也是初学者,有错误请各位提出,大家一起学习。

原始形式代码:

 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 }
原文地址:https://www.cnblogs.com/wn19910213/p/3322269.html