美文网首页
最简单的感知机

最简单的感知机

作者: 看风景的人_21744 | 来源:发表于2017-12-25 20:53 被阅读0次

    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')
    
    
    • 比较好看的一个结果


    相关文章

      网友评论

          本文标题:最简单的感知机

          本文链接:https://www.haomeiwen.com/subject/dcjrgxtx.html