机器学习-单个感知器实现逻辑或(matlab实现)

效果如下:

主函数:main

%-------------------------------------------------------------------------%
%训练阶段
nums=4;%训练集
x_dim=3;%输入向量维度
Training_Set=[-1 1 1 1
              -1 1 0 1
              -1 0 1 1
              -1 0 0 0];%第一列为常数项,第二列为分量一,第三列为分量二,第四列为目标值
w=rand(x_dim,1);%权值
Learning_Rate=0.03;%学习率
error=0.5;%允许误差
w=Training(nums,x_dim,Training_Set,w,Learning_Rate,error);
%-------------------------------------------------------------------------%
%作图阶段
x=-0.5:0.1:1.5;
y=w(1)./w(3)-w(2)./w(3).*x;
plot(Training_Set(:,2),Training_Set(:,3),"*");
hold on;
plot(x,y);

辅助函数:Training

function [Ret] = Training(nums,x_dim,Training_Set,w,Learning_Rate,error)
%接受参数:样本数量,向量维度,训练集,初始权重,学习率,允许误差
while(1)
    Error_Sum=0;%误差和
    for i=1:nums
        Real_y=Training_Set(i,1+x_dim);%目标真实值
        x=Training_Set(i,1:x_dim);%输入向量
        Err=Real_y-(x*w>=0);%误差计算
        w=w+Learning_Rate.*Err.*(x)';%权值调整
        Error_Sum=Error_Sum+Err;%误差累积
    end
    if(Error_Sum<=error)%结束条件
        break;
    end
end
Ret=w;
end
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值