统计学习方法之感知机_李航

感知机的前提是假定数据集线性可分,通过不断更新w,b的值使损失函数最小。

感知机学习算法的原始形式代码如下:

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
public class Sensor_1 {
public static int []w= new int[2];
public static int b=0;
public static int t=0;
public static int learning(Map map){
Iterator> it = map.entrySet().iterator();  
int []x=new int[2];
int y=0;
while (it.hasNext()) {  
     Map.Entry entry = it.next();
     y=entry.getValue();
     x=entry.getKey();
     if(y*(w[0]*x[0]+w[1]*x[1]+b)<=0){
    t++;
    w[0]=w[0]+y*x[0];
    w[1]=w[1]+y*x[1];
    b=b+y;
    System.out.println("w= " + w[0] +","+w[1]+ "; b=" + b);
     }  
}
return t;
}
public static void main(String args[]){
Mapinstance = new HashMap();
int [][]x1={{3,3},{4,3},{1,1}};
instance.put(x1[0], 1);
instance.put(x1[1], 1);
instance.put(x1[2], -1);
int t2=learning(instance);
while(t2>0){
t=0;
t2=learning(instance);
}
}

}

这里也可直接使用数组,不用map

你可能感兴趣的:(统计学习方法)