《统计学习方法》之二:感知机学习算法

Posted skylover

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《统计学习方法》之二:感知机学习算法相关的知识,希望对你有一定的参考价值。

只有亲自用代码实现才算真正理解算法,有时候也要在不断的修改调试中理解,更何况只看不敲代码呢?

 

代码:

 

% date :  2019/01/02
% author: Dufy
% 关于感知机算法
% 输入: x1,  x2数据点
%            y  为分类,1为正,-1为负

close all;
clc
clear
format compact
i=0;
a = -1;

x1=[3 4 1];
x2= [3 3 1];
y = [1 1 -1];
n = length(x1);

alpha = 1;

w= [0  0]‘;
b= 0;   %初值

flag = 0

while( 1 )
    
    
    for i  = 1:n
        if (y(i)*([x1(i) x2(i)] *w +b)) <= 0
            %           更新权重
            w = w+ alpha*y(i)*[x1(i) x2(i)]‘
            b= b+alpha * y(i)
            
            flag = flag +1;
        end
        
    end
    
    
    if  flag==0  %分类错误点个数 = 0
        break
    end
    
    flag =0;
end

% X = [‘最终的分类线为:y=‘,num2str(b),‘x‘];
% disp(X)

% 绘制wx+b=0分类线
xx=0:0.1:7;
for i=1:n
    if y(i)==1
        scatter(x1(i),x2(i),‘r*‘)
    else
        scatter(x1(i),x2(i),‘bo‘)
    end
    hold on
    plot(xx,(-b-w(1)*xx)/w(2),‘LineWidth‘,4)
    %     set(‘fontweight‘,‘bold‘)
    axis equal
    axis([0, 5, 0, 5]);   % 坐标轴的显示范围
    xlabel(‘X1‘)
    ylabel(‘X2‘)
    grid on
end

 

  运行结果如下:

技术分享图片

 

以上是关于《统计学习方法》之二:感知机学习算法的主要内容,如果未能解决你的问题,请参考以下文章

统计学习方法:感知机

统计学习方法 二 感知机

感知机:学习算法之原始形式统计学习方法

统计学习方法(第2章)感知机 学习笔记

[笔记-统计学习方法]感知机 perceptron

统计学习三:2.K近邻法代码实现(以最近邻法为例)