clc,clear all;
%% 训练样本数据
xData=[1 5;2 2;3 1;4 6;6 8;6 5;7 9;8 7;9 8;10 2] %样本数据点,对应编号为1,2,...10
Y=[1 1 -1 -1 1 -1 1 1 -1 -1]'; %对应的样本类别,用1和-1表示
xNum=1:10; %编号
format rat
%% 绘制样本分布图
L1=find(Y==1);
x=xData(L1,1);y=xData(L1,2);
plot(x,y,'b+','LineWidth',3,'MarkerSize',12);
hold on;
L2=find(Y==-1);
x=xData(L2,1);y=xData(L2,2);
plot(x,y,'ro','LineWidth',3,'MarkerSize',12);
xlabel('X1');ylabel('X2');axis([0 10 0 10])
%% ***********************************初试过程************************************
H1=zeros(10,1);H2=H1;H3=H1
for i=1:10
X=xData(i,:);
H1(i) = wcH1( X,2.5 );%弱分类器h1
H2(i) = wcH2( X,8.5 );%弱分类器h2
H3(i) = wcH3( X,6.5 );%弱分类器h3
end
errDataH1=find(H1~=Y);%找到被h1错分的样本点的序号
errDataH2=find(H2~=Y);%找到被h2错分的样本点的序号
errDataH3=find(H3~=Y);%找到被h3错分的样本点的序号
accDataH1=find(H1==Y);%找到被h1正确分的样本点的序号
accDataH2=find(H2==Y);%找到被h2正确分的样本点的序号
accDataH3=find(H3==Y);%找到被h3正确分的样本点的序号
errDataAll=[errDataH1,errDataH2,errDataH3];
accDataAll=[accDataH1,accDataH2,accDataH3];
N=10;
D1=zeros(10,1)+1/N % 初始化权值分布
%% ***********************************第一次迭代***********************************
err1=sum(D1(errDataH1,:));%所有被错分类的样本点的权值之和即为误差率
err2=sum(D1(errDataH2,:));%所有被错分类的样本点的权值之和即为误差率
err3=sum(D1(errDataH3,:));%所有被错分类的样本点的权值之和即为误差率
errAll=[err1,err2,err3];
[minErr,minIndex]=min(errAll);
%根据误差率e1计算H1的系数:
a1=0.5*log((1-minErr)/minErr)
minErrData=errDataAll(:,minIndex);
minAccData=accDataAll(:,minIndex);
D2=D1;
for i=minAccData'
D2(i)=D2(i)/(2*(1-minErr));
end
for i=minErrData'
D2(i)=D2(i)/(2*minErr);
end
D2
%分类函数
f1=a1.*H1;
kindFinal=sign(f1)%此时强分类器的分类结果
%% ***********************************第二次迭代***********************************
err1=sum(D2(errDataH1,:));%所有被错分类的样本点的权值之和即为误差率
err2=sum(D2(errDataH2,:));%所有被错分类的样本点的权值之和即为误差率
err3=sum(D2(errDataH3,:));%所有被错分类的样本点的权值之和即为误差率
errAll=[err1,err2,err3];
[minErr,minIndex]=min(errAll);
% 根据误差率e2计算H2的系数:
a2=0.5*log((1-minErr)/minErr)
minErrData=errDataAll(:,minIndex);
minAccData=accDataAll(:,minIndex);
D3=D2;
for i=minAccData'
D3(i)=D3(i)/(2*(1-minErr));
end
for i=minErrData'
D3(i)=D3(i)/(2*minErr);
end
D3
% 分类函数
f2=a1.*H1+a2*H2;
kindFinal=sign(f2)%此时强分类器的分类结果
%% ***********************************第三次迭代***********************************
err1=sum(D3(errDataH1,:));%所有被错分类的样本点的权值之和即为误差率
err2=sum(D3(errDataH2,:));%所有被错分类的样本点的权值之和即为误差率
err3=sum(D3(errDataH3,:));%所有被错分类的样本点的权值之和即为误差率
errAll=[err1,err2,err3];
[minErr,minIndex]=min(errAll);
% 根据误差率e3计算G3的系数:
a3=0.5*log((1-minErr)/minErr)
minErrData=errDataAll(:,minIndex);
minAccData=accDataAll(:,minIndex);
D4=D3;
for i=minAccData'
D4(i)=D4(i)/(2*(1-minErr));
end
for i=minErrData'
D4(i)=D4(i)/(2*minErr);
end
D4
% 分类函数
f3=a1.*H1+a2*H2+a3*H3;
kindFinal=sign(f3)%此时强分类器的分类结果
%%
基于MATLAB的adaboost算法实例 简单易懂
需积分: 5 2 浏览量
2024-01-19
17:10:32
上传
评论
收藏 2KB ZIP 举报
qq_278813017
- 粉丝: 1
- 资源: 13
最新资源
- 基于UC3842+LTS26Q1565A设计PC机充电器 硬件(原理图+PCB)工程文件.zip
- Hive SQL经典面试题,大数据SQL经典面试题
- Qt实现喷码器代码,实现二维码、条形码、图形的旋转、移动等
- 基于LM324芯片比较器传感器模块AD09设计硬件(原理图+PCB)工程文件.zip
- HTTP请求 - 记一笔-添加记账.jmx
- 2205040245凡永超硬间隔svm.ipynb
- Qt喷码器demo,演示软件,不是代码
- 目标跟踪-基于目标中心点同时进行目标检测+目标跟踪算法实现-项目源码-优质项目实战.zip
- Python《文本特征分析-全唐诗数据挖掘及分析 》+源代码
- Netron-Setup-4.5.0
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈