神经网络-感知机原理及其matlab代码实现二分类

感知机简介

感知机是最简单的神经网络,结构如下图所示:
两个输入神经元的感知机示意图
感知机由输入层和输出层组成,输入层可以有多个,输入的结果等于每个输入神经元和权值的乘积xw的和:
y=x1w1+x2w2-θ
其中θ可以固定为-1,因此感知机通过不断训练来优化权值

感知机用于分类

二分类示意图
如图,分类的目的是找到一个直线(超平面)将两个类别分开,感知机通过不断训练寻找合适的直线来分类,但是只适用于线性可分问题。

matlab代码

matlab版本:R2017a

function perceptron()
clear all;
clc;
learnrate=0.5;%学习率
maxtrainnumber=100;%最大训练次数
trainset=[2,4,5,1;1,2,1,-1;4,5,6,1;0,1,3,-1]; %获取训练集

testset=[5,6,4,1;1,2,1,-1];%获取测试集
[testm,~]=size(testset);
[trainm,trainn]=size(trainset);

w=unifrnd(-1, 1, 1, trainn-1);  %初始化权值

for i=1:maxtrainnumber %开始训练感知机
    mark=1;
     for j=1:trainm
         y=sign(sum(trainset(j,1:trainn-1).*w)+1); %%计算感知机的输出
         if y~=trainset(j,end)
             mark=0;
             w=w+learnrate*(trainset(j,end)-y).*trainset(j,1:trainn-1);%修正w
         end
     end
     if mark==1
         break;         
     end      
end
numel(find((sign(sum((testset(:,1:trainn-1).*w)')+1)-testset(:,end)')==0))/testm%测试测试集上面预测的正确率
end
  • 0
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值