zoukankan      html  css  js  c++  java
  • matlab实现感知机算法

    %首先一定要线性可分

    %迭代只要分得开。迭代谁都可以,但最后的结果是迭代标签才分得开

    %code如下

    clear all
    data=[3 3 1;
    4 3 1;
    1.5 0 1;
    0.5 0.9 1;
    2 1 1;
    0.5 0.5 -1;
    0 0 -1;
    -2 -2 -1;
    -3 0 -1;
    1 3 1];
    X=data(:,[1,2])

    % X =
    %
    % 3.0000 3.0000
    % 4.0000 3.0000
    % 1.5000 0
    % 0.5000 0.9000
    % 2.0000 1.0000
    % 0.5000 0.5000
    % 0 0
    % -2.0000 -2.0000
    % -3.0000 0
    % 1.0000 3.0000

    y=data(:,3)

    % y =
    %
    % 1
    % 1
    % 1
    % 1
    % 1
    % -1
    % -1
    % -1
    % -1
    % 1

    m=size(X,1); % m=样本点个数 10个
    plotData2(X,y);%先在图上将样本画出来
    axis([-4 4 -4 4]);
    hold on
    x1=-4:0.2:4 %x1坐标轴

    W=[0;0]; b=0;
    alph=0.5; %学习率
    error=1;
    %Y=[data(:,2),data(:,2)]
    while error>0
    error=0;
    for i=1:m
    if (((W'*X(i,:)'+b)*y(i))<=0)
    error=error+1;

    W=W+alph*y(i)*X(i,:)'

    b=b+alph*y(i)

    y1=-(W(1)*x1+b) %只是用来绘图的
    %W(1)
    %W(2)
    %b
    plot(x1,y1,'-b');
    pause(0.5);

    end
    end
    end
    plot(x1,y1,'r','Linewidth',3);

    function plotData2(X,y)
    figure;hold on;
    pos=find(y==1);
    neg=find(y==-1);
    plot(X(pos,1),X(pos,2),'+','Linewidth',2,'MarkerSize',9);
    plot(X(neg,1),X(neg,2),'o','MarkerFaceColor','r','Linewidth',2,'MarkerSize',7);
    hold off;
    end

  • 相关阅读:
    jvm 更多链接
    JVM 内存初学 (堆(heap)、栈(stack)和方法区(method) )
    python 排序
    python 第K个语法符号
    python conf.ini 文件的使用
    python 表示数字
    window 下安装redis
    python redis相关操作
    python 矩阵乘法
    python 查找两个字符串a,b中的最长公共子串
  • 原文地址:https://www.cnblogs.com/china520/p/11607672.html
Copyright © 2011-2022 走看看