您的位置:首页 > 编程语言 > MATLAB

matlab实现简单的感知器分类

2014-11-18 09:55 197 查看
%%标签为-1

x1 = [1,1,1,2,2,2,3,3];

y1 = [1,2,3,1,2,3,1,2];

%%标签为1

x2 = [3,4,4,4,5,5,5];

y2 = [6,5,6,7,4,6,7];

%%画出所有样本,r*代表-1标签,b.代表1的标签

plot(x1,y1,'r*',x2,y2,'b.');

axis([-1 6 -1 8]);

%%初始化分类线

x = -1 : 0.1 : 6;

y = zeros(length(x));

hold on

plot(x,y);

x1 = [x1,x2]';

x2 = [y1,y2]';

y = [-1,-1,-1,-1,-1,-1,-1,-1,1,1,1,1,1,1,1]';

temp = 1;

%%初始化w和b;

w1 = 0;

w2 = 0;

b = 0;

while(temp > 0)

temp = 0;

for i = 1 : 15

if ((y(i)*(w1*x1(i) + w2*x2(i) + b)) <= 0)

%%如果yi*(w*xi+b)<= 0 更新斜率和截距

%%w = w + yi*xi,b = b + yi

w1 = w1 + y(i)*x1(i);

w2 = w2 + y(i)*x2(i);

b = b + y(i);

temp = 1;

hold on

plot(x,(-b-x*w1)/w2);

pause(1);

end

end

end

plot(x,(-b-x*w1)/w2,'r');

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: