感知机(perceptron)算法与MATLAB实现
2017-04-06 15:31
330 查看
参考:http://blog.csdn.net/xmu_jupiter/article/details/21884501
感知机策略:
选取w和b,使得误分类点到分类超平面S的总距离最小,即min L(w,b)=-∑yi*(wi+b) (误分类点的和)
感知机算法:
采取随机梯度下降法(stochastic gradient descent):一次随机选取一个误分类点来更改w和b的值
(1)选取初值w=0,b=0(本例中是这么设置的,注意w和b可能是向量)
(2)在训练集中选取数据(xi,yi)
(3)如果yi*(wi+b)≤0,则该点是一个误分类点,需要更新w和b的值:
w←w+λ*yi*xi,b←b+λ*yi,λ是学习率(也需要设置一个值)
(4)重复(2)和(3)直至没有误分类点
先建一个脚本
在命令行输入与结果:
感知机策略:
选取w和b,使得误分类点到分类超平面S的总距离最小,即min L(w,b)=-∑yi*(wi+b) (误分类点的和)
感知机算法:
采取随机梯度下降法(stochastic gradient descent):一次随机选取一个误分类点来更改w和b的值
(1)选取初值w=0,b=0(本例中是这么设置的,注意w和b可能是向量)
(2)在训练集中选取数据(xi,yi)
(3)如果yi*(wi+b)≤0,则该点是一个误分类点,需要更新w和b的值:
w←w+λ*yi*xi,b←b+λ*yi,λ是学习率(也需要设置一个值)
(4)重复(2)和(3)直至没有误分类点
先建一个脚本
function [ w,b ] = original_style( training_set,study_rate ) %training_set是一个m*n维矩阵,其中第一行是y_i,剩下的行的x_i %选取初始值w_0,b_0 w=0; b=0; count=0; %每一次正确分类点个数 iteration_count=0; %迭代次数 fprintf('迭代次数\t误分类点\t\t权值w\t\t偏置b\t\n');%输出结果标题 while count ~= size(training_set,2) %training_set列数,即样本数 %当没有误分类点时,不执行if语句,count每次都加1,不满足while条件,跳出while循环,结束 count=0; %在训练集中选取数据(x_i,y_i) for i=1:size(training_set,2) count = count+1; %如果某个样本y_i(w*x_i+b)<=0,则被误分类,对w和b进行相应的更新 if training_set(1,i)*(w'*training_set(2:size(training_set,1),i)+b)<=0 w = w + study_rate*training_set(1,i)*training_set(2:size(training_set,1),i); b = b + study_rate*training_set(1,i); iteration_count=iteration_count+1; %迭代次数+1 count=count-1;%不是正确分类点,减一 fprintf('\t%u\t',iteration_count);%输出迭代次数 fprintf('\t\t%u\t',i);%输出误分类点 fprintf('\t(%2.1g,%2.1g)''\t',w);%输出w fprintf('\t%4.1g\n',b);%输出b end end end end
在命令行输入与结果:
相关文章推荐
- matlab 实现感知机线性二分类算法(Perceptron)
- 用matlab实现感知机学习算法,训练分类器并解决井字游戏
- 用matlab实现感知机学习算法,训练分类器并解决井字游戏
- KNN的matlab实现算法(转载)
- 根据邻接计算有向图的可达矩阵的算法及其MATLAB实现
- 匈牙利算法的MatLab实现
- 数字图像去噪典型算法及matlab实现 推荐
- 多级树集合分裂(SPIHT)算法的过程详解与Matlab实现(6)解码过程——主程序
- MATLAB 感知机简单实现
- 数字图像去噪典型算法及matlab实现
- 数字图像去噪典型算法及matlab实现
- 基于HSV色彩空间变换的阴影检测算法——MATLAB实现
- 多级树集合分裂(SPIHT)算法的过程详解与Matlab实现(1)算法概述
- 一种运动区域提取算法及Matlab实现
- 数米粒个数和每个米粒面积的matlab算法实现(递归)。
- 数字图像去噪典型算法及matlab实现
- 多级树集合分裂(SPIHT)算法的过程详解和Matlab实现(5)编码过程——精细扫描
- 多级树集合分裂(SPIHT)算法的过程详解和Matlab实现(4)编码过程——排序扫描
- Matlab的图像细化算法(详细实现)
- 基于肤色和眼睛定位的人脸检测算法——MATLAB实现