首页 > 代码库 > 感知器算法(二分类问题)
感知器算法(二分类问题)
下面是实验结果:
main.m
<span style="font-family:Times New Roman;font-size:14px;">data=http://www.mamicode.com/[0 0 0;0 1 1;1 0 1;1 1 2;2 1 1;1 2 3;2 2 4;3 2 1];>
perceptron.m
<span style="font-family:Times New Roman;font-size:14px;">function [w, mis_class] = perceptron(X,t) % The perceptron algorithm %by LiFeiteng email:lifeiteng0422@gmail.com % X : D*N维输入数据 % t : {+1,-1}标签 % % w : [w0 w1 w2] % mis_class : 错误分类数据点数 % 对t做简单的检查 if size(unique(t),2)~=2 return elseif max(t)~=1 return elseif min(t)~=-1 return end [dim num_data] = size(X); w = ones(dim+1,1);%%w = [w0 w1 w2]' X = [ones(1,num_data); X]; maxiter = 1000; mis_class = 0; iter = 0; while iter<maxiter iter = iter+1; y = w'*X; label = ones(1, num_data);%{+1,-1} label(y<=0) = -1; index = find(label~=t); %错误分类的点 mis_class = numel(index); %错误分类点的数目 if mis_class==0 break end for i = 1:mis_class w = w + X(:,index(i))*t(index(i)); end end if iter==maxiter disp(['达到最大迭代次数' num2str(maxiter)]) end </span>
感知器算法(二分类问题)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。