感知机模型算法的实现

  • 前言:学习了《统计学习方法》(李航)中的感知机模型,书中给出了感知机模型原始形式的算法设计,如下:在这里插入图片描述
  • 除此以外,书中还给出了例题如下:在这里插入图片描述
  • 基于算法设计以及例题,我用代码实现了一遍,下面给出代码及运行结果:
public static void main(String args[]){
    Perceptron perceptron = new Perceptron();
    int tims = 0; //times用来记录调整次数
    int x[][] = new int[][]{{3,3},{4,3},{1,1}};  int y[] = new int[]{1,1,-1};//训练集
    int[] w = {0,0};int b = 0; //(1)初始化w和b

    for(int i = 0;i<y.length;i++){//(2)从数据集中依次选取数据
        if(!(y[i]*(w[0]*x[i][0]+w[1]*x[i][1]+b)>0)){//(3)判定是否为误分类点,是则更新w和b
            int array[]={y[i]*x[i][0],y[i]*x[i][1]};
            w = perceptron.addArray(w,array);
            b = b+y[i];
            tims++;
            System.out.println("这是第"+tims+"调整,此时w为("+w[0]+","+w[1]+"),b为"+b);
            i=-1;//(4)转向(2)迭代,调整后从x[0]重新开始,由于这句执行完后会执行i++,故i=-1
        }
    }
    System.out.println("调整完成!");
}
  • 运行结果:
这是第1调整,此时w为(3,3),b为1
这是第2调整,此时w为(2,2),b为0
这是第3调整,此时w为(1,1),b为-1
这是第4调整,此时w为(0,0),b为-2
这是第5调整,此时w为(3,3),b为-1
这是第6调整,此时w为(2,2),b为-2
这是第7调整,此时w为(1,1),b为-3
调整完成!
Process finished with exit code 0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值