最简单的感知机

matlab编程

clear all
%生成点
n=100;
x1=2*rand(1)-1;y1=2*rand(1)-1;
x2=2*rand(1)-1;y2=2*rand(1)-1;
ps=2*rand(n,2)-1;

%要去y1<y2
if y1>y2
    a=x1;x1=x2;x2=a;
    a=y1;y1=y2;y2=a;
end

%训练输出
 realout=zeros(n,1);
 for i=1:n
        realout(i)=pinline(x1,y1,x2,y2,ps(i,1),ps(i,2));
 end
 
w1=0;w2=0;w0=0;
%随机找个点
pick=ceil(n*rand(1));
%调整权重
w1=w1+pinline(x1,y1,x2,y2,ps(pick,1),ps(pick,2))*ps(pick,1);
w2=w2+pinline(x1,y1,x2,y2,ps(pick,1),ps(pick,2))*ps(pick,2);
w0=w0+pinline(x1,y1,x2,y2,ps(pick,1),ps(pick,2))*1;

count=0;
index=1;
while(index)
    count=count+1;
    %x3=(-w0)/w1;y3=0;   %特殊情况是w1=0,方程是y=c
    %x4=(-w0-w2)/w1; y4=1;
    
    testout=zeros(n,1);
    
    for m=1:1:n
        testout(m)=sign(w0+w1*ps(m,1)+w2*ps(m,2));
    end
    %是否可以了呢
    diff=realout-testout;
    
    if(sum(abs(diff))~=0)
        
        diff(diff~=0)=1;
        total=ceil(rand(1)*sum(diff));
        count2=0;
        for i=1:n
            if(diff(i)==0)
            else
            count2=count2+1;
            end
            if(count2==total) 
                break;
            end
        end
       
        %不可以的处理
        w1=w1+pinline(x1,y1,x2,y2,ps(i,1),ps(i,2))*ps(i,1);
        w2=w2+pinline(x1,y1,x2,y2,ps(i,1),ps(i,2))*ps(i,2);
        w0=w0+pinline(x1,y1,x2,y2,ps(i,1),ps(i,2))*1;
    else
        index=0;
        %sprintf('hehe')
        %break;
    end
end

scatter(ps(:,1),ps(:,1),'k')
scatter(ps(:,1),ps(:,2),'k')
xx1=-1:0.01:1;
yy1=(y2-y1)/(x2-x1)*(xx1-x1)+y1;
hold on
plot(xx1,yy1,'r')
%yy2=(y4-y3)/(x4-x3)*(xx1-x3)+y3;
yy2=(-w1/w2)*xx1-w0/w2;
hold on
plot(xx1,yy2,'b')

  • 比较好看的一个结果


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 写在之前 因为简书字数限制,完整版地址:https://www.zybuluo.com/hainingwyx/no...
    hainingwyx阅读 14,754评论 0 41
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,937评论 25 709
  • 每个人都有梦想,每个人都有行动去实现自己的梦想。坚持是每次去实现梦想的时候都要牢记的。而心里对自己要求很高,而在行...
    鹿鹿无畏阅读 3,561评论 0 51
  • 离婚一个月13天,今天两位关爱我的姨姐过来找我,当时我还刚从梦中醒来,一见到我就说给我介绍对象。瞬间是有...
    梦里说梦的梦话阅读 1,895评论 0 0
  • 回眸惊是撞仙子 倚风偎香且随欢 无端浅袖见素手 欲留皓腕约金环 娇额情态束柳肢 写入盈妆和菡萏 罗衣云锦何飘摇 愿...
    饮水独爱清欢阅读 2,548评论 1 1

友情链接更多精彩内容