• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

matlab实现感知机算法

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

%首先一定要线性可分

%迭代只要分得开。迭代谁都可以,但最后的结果是迭代标签才分得开

 

%code如下

 

clear all
data=[3 3 1;
4 3 1;
1.5 0 1;
0.5 0.9 1;
2 1 1;
0.5 0.5 -1;
0 0 -1;
-2 -2 -1;
-3 0 -1;
1 3 1];
X=data(:,[1,2])

% X =
%
% 3.0000 3.0000
% 4.0000 3.0000
% 1.5000 0
% 0.5000 0.9000
% 2.0000 1.0000
% 0.5000 0.5000
% 0 0
% -2.0000 -2.0000
% -3.0000 0
% 1.0000 3.0000

y=data(:,3)

% y =
%
% 1
% 1
% 1
% 1
% 1
% -1
% -1
% -1
% -1
% 1

m=size(X,1); % m=样本点个数 10个
plotData2(X,y);%先在图上将样本画出来
axis([-4 4 -4 4]);
hold on
x1=-4:0.2:4 %x1坐标轴

W=[0;0]; b=0;
alph=0.5; %学习率
error=1;
%Y=[data(:,2),data(:,2)]
while error>0
error=0;
for i=1:m
if (((W'*X(i,:)'+b)*y(i))<=0)
error=error+1;

W=W+alph*y(i)*X(i,:)'

b=b+alph*y(i)

y1=-(W(1)*x1+b) %只是用来绘图的
%W(1)
%W(2)
%b
plot(x1,y1,'-b');
pause(0.5);

end
end
end
plot(x1,y1,'r','Linewidth',3);

function plotData2(X,y)
figure;hold on;
pos=find(y==1);
neg=find(y==-1);
plot(X(pos,1),X(pos,2),'+','Linewidth',2,'MarkerSize',9);
plot(X(neg,1),X(neg,2),'o','MarkerFaceColor','r','Linewidth',2,'MarkerSize',7);
hold off;
end


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
delphixe7FireDAC官方文档发布时间:2022-07-18
下一篇:
delphi tidhttp 超时的解决方案发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap