机器学习——简单感知机

作业三(编程题)感知机算法的实现

[1]     请用matlab实现算法2.1(第29页);

[2]     用例2.1的数据测试编写的算法;

[3]     更改算法中的学习率,观察算法的收敛速度和最终的模型;

[4]     更改训练集为,观察w和b的值是否发生变化。



%感知机学习算法的原始形式实现
eta = 1; %学习率
M = 2;   %样本维度,必要时便于修改
N = 3;   %样本个数
% x = round(rand([M N])*10); %生成 M x N的随机矩阵,每个元素取值区间为[0,10]
% y = round(rand([1 N])*2)-1; %N个取值为+1或-1的标签,与x一一对应
x1=[3 4 1;     %三组训练样本(3,3)、(4,3)、(1,1)
    3 3 1];
x2=[3 1 4;
    3 1 3];
y1=[1 1 -1];   %样本对应标签1、1、-1
y2=[1 -1 1];
w = zeros(1,M); %初始w0
b = 0;          %初始b0
for j = 1:2
    if(j==1)   %训练样本x1
        x=x1;
        y=y1;
    else       %训练样本x2
        x=x2;
        y=y2;
    end
    while(~isempty(find(y.*(w*x+b*ones(1,N))<=0))) %当存在误分类点时,一直迭代
        for i = 1:N
            if (y(i)*(w*x(:,i)+b)<=0)     %误分类点
                w = w + eta*y(i)*x(:,i)'; %更新w
                b = b + eta*y(i);         %更新b
            end
        end
    end
    w  %输出 w b
    b
end


  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值