• perceptron感知机 mtalab


    data=load('data.txt');
    x=[data(:,1),data(:,2)];
    y=data(:,3);
    k=length(y);
    
    %绘制散点图
    for j=1:k
        if y(j)==1
            plot(x(j,1),x(j,2),'o');
            hold on
        end
        if y(j)==-1
            plot(x(j,1),x(j,2),'x');
            hold on
        end
    end
    
    %初始化参数
    w=[0,0];
    b=0;
    r=0.5; %学习速度
    con=0;
    t=0;  %记录迭代次数
    br=[];  %记录b的变化
    wr=[];  %记录w的变化
    
    while con==0
        for i=1:k
            if (y(i)*(dot(w,x(i,:))+b))<=0  %判断是否分类错误
                w(1)=w(1)+r*y(i)*x(i,1);
                w(2)=w(2)+r*y(i)*x(i,2);
                b=b+r*y(i);
                w=[w(1),w(2)];
                wr=[wr,w];
                br=[br,b];
                t=t+1;
            end
        end
        
        for i=1:k
            con1(i)=(y(i)*(dot(w,x(i,:))+b));
        end
        con=(all(con1(:)>0));
    end
    
    xt=0:0.1:10;
    yt=(-w(1)*xt-b)/w(2);
    plot(xt,yt);
    

      

      数据:

    1.2435 4.1728 -1.0000
    1.3435 6.6935 -1.0000
    1.4435 5.6401 -1.0000
    1.5435 3.7946 -1.0000
    1.6435 4.2596 -1.0000
    1.7435 6.2168 -1.0000
    1.8435 5.1952 -1.0000
    1.9435 4.7744 -1.0000
    2.0435 3.6288 -1.0000
    2.1435 5.6932 -1.0000
    2.2435 6.1607 -1.0000
    8.2858 5.0430 1.0000
    8.3858 6.1396 1.0000
    8.4858 4.8663 1.0000
    8.5858 3.1537 1.0000
    8.6858 5.7617 1.0000
    8.7858 4.8398 1.0000
    8.8858 6.4166 1.0000
    8.9858 5.7650 1.0000
    9.0858 4.0198 1.0000
    9.1858 5.3157 1.0000
    9.2858 4.8547 1.0000

    运行结果:

     

    朝闻道
  • 相关阅读:
    Linux下定时删除指定目下n天前的文件
    日期时间格式化
    sed与awk
    Linux守护进程(init.d和xinetd)
    python-Json模块
    python3 urllib模块
    linux 命令 rsync
    Linux下scp的用法
    代码块重定向
    使用exec
  • 原文地址:https://www.cnblogs.com/wander-clouds/p/8845876.html
Copyright © 2020-2023  润新知