zoukankan      html  css  js  c++  java
  • 李航老师的《统计学习方法》第二章算法的matlab程序

    参考了http://blog.sina.com.cn/s/blog_bceeae150102v11v.html#post


    % 感知机学习算法的原始形式,算法2.1参考李航《统计学习方法》书中第二章的算法P29

    close all
    clear all
    clc
    X=[3,3;4,3;1,1];Y=[1,1,-1];%训练数据集及标记
    learnRate=1;%学习率
    Omega=zeros(1,size(X,2))
    b=0 %% ω和b的初值
    i=1;k=0;
    while 1
    if Y(i)*(sum(Omega.*X(i,:))+b)<=0 %该点未被正确分类,调整之
    Omega=Omega+learnRate*Y(i)*X(i,:);
    b=b+learnRate*Y(i);
    i=1;%调整w,b之后,重新对每个点检查
    k=k+1;%记录迭代次数
    fprintf('迭代次数k=%d',k);
    omega=sprintf('%2.0f ',Omega)
    fprintf('b=%d ',b);
    continue;
    else
    i=i+1;
    end
    if i>size(X,1)
    break;
    end
    end
    w=Omega
    b

    % 感知机学习算法的对偶形式,算法2.2参考李航《统计学习方法》书中第二章的算法P33

    close all
    clear all
    clc
    X=[3,3;4,3;1,1];Y=[1,1,-1];%训练数据集及标记
    learnRate=1;%学习率(0,1]
    alpha=zeros(1,size(X,1))
    b=0 %%alpha和b的初值 size(X,dim) dim=1返回行数(有几个x点),dim=2返回列数
    G=X*X';%%计算Gram矩阵
    i=1;k=0;
    while 1
    if Y(i)*(sum(alpha.*Y.*G(i,:))+b)<=0 %该点未被正确分类,调整之
    alpha(i)=alpha(i)+1;
    b=b+Y(i);
    i=1;%调整w,b之后,重新对每个点检查
    k=k+1;%记录迭代次数
    fprintf('迭代次数k=%d',k);
    Alpha=sprintf('%2.0f ',alpha)
    fprintf('b=%d ',b);
    continue;%跳过循环体中的某些语句。当在循环体内执行到该语句的时候,程序将跳过循环体内中剩下的所有语句,继续执行下一次循环。
    else
    i=i+1;
    end
    if i>size(X,1)
    break;%终止循环的执行,当在循环体内执行到break语句的时候,程序将跳出该循环体,继续执行循环体外的下一个语句
    end
    end
    w=alpha.*Y*X % *是乘法,即矩阵乘法,.*是点乘,即对应元素相乘
    b

  • 相关阅读:
    python 实例方法、静态方法、类方法的区别
    locust 参数化实现
    Airtest 基于图像识别的自动化测试工具
    python 调用 dubbo 接口
    locust+geventhttpclient 性能优化
    python性能测试工具locust
    性能测试工具 wrk
    jmeter 参数化,关联参数,断言等使用说明
    Django上传excel表格并将数据写入数据库
    小程序 wx.uploadFile 上传文件 iOS 失败 400 错误排查
  • 原文地址:https://www.cnblogs.com/dengyt/p/7787097.html
Copyright © 2011-2022 走看看