AdaBoost分类识别
AdaBoost分类识别:百度网盘视频链接:http://pan.baidu.com/s/1o8odqPk
录制的视频是算法底层原理讲解,底层代码实现,方便大家真正掌握算法实质,开发出更加出色的算法。录制视频的初衷是:避免读者朋友利用大把时间学习已有常见算法,本系列视频旨在让读者朋友快速深入了解这些常见算法原理,有更多的时间去研究更加高大上算法(价值)。
具体链接在halcom.cn论坛,联系人QQ:3283892722
该论坛是一个学习交流平台,我会逐一的和大家分享学习。
欢迎大家录制视频,并提交给我,我来设置视频,你可在论坛进行打赏分享。
视频专用播放器:http://halcom.cn/forum.php?mod=viewthread&tid=258&extra=page%3D1
使用环境:Win7-32bit-matlab2014a-CPU
function = adaboost(Xtrain, Ytrain, Xtest)
% AdaBoost function
% (X_train-> input: training set)
% (Y_train-> target)
% (Xtest-> input: testing set)
% (ada_train-> label: training set)
% (ada_test-> label: testing set)
% Choosen Weak classifiers:
% 1. GDA
% 2. knn (NumNeighbors = 30)
N=size(Xtrain,1); % 训练样本个数
a=;% 【训练样本输入+输出】
% 初始化
D=(1/N)*ones(N,1);
Dt=[];
h_=[];
Classifiers=2; % GDA+KNN
eps=zeros(Classifiers,1);% 每个弱分类器的误差
for T=1:Classifiers
p_min=min(D);
p_max=max(D);
k=1;
for i=1:length(D)
p = (p_max-p_min)*rand(1) + p_min;% 在内随机产生
if D(i)>=p % 权值大于p值
d(k,:)=a(i,:);
k=k+1;
end
t=randi(size(d,1));
Dt=;
end
X=Dt(:,1:end-1);
Y=Dt(:,end);
if T==1
% gda
gda_in=fitcdiscr(X, Y);
gda_out=predict(gda_in, X);
h=gda_out;
Dt=[];% 置空
end
if T==2
% knn with (30 Nearest Neighbour)
knn_in=fitcknn(X,Y,'NumNeighbors',30);
knn_out=predict(knn_in, X);
h = knn_out;
Dt=[];% 置空
end
h_=;% 存储不同弱分类器的结果
% weighted error --- 不同分类器预测错误的样本权值和
for i=1:length(Y)
if (h_(i, T)~=Y(i))
eps(T)=eps(T)+D(i,:);
end
end
% Hypothesis weight --- 不同分类器的权值
alpha(T)=0.5*log((1-eps(T))/eps(T));
% Update weights --- 不同样本的权值
D=D.*exp((-1).*Y.*alpha(T).*h);
D=D./sum(D);% 归一化
end
% final vote
H(:,1)=predict(gda_in, Xtrain);
H(:,2)=predict(knn_in, Xtrain);
ada_train(:,1)=sign(H*alpha');
% for test set
Htest(:,1)=predict(gda_in, Xtest);
Htest(:,2)=predict(knn_in, Xtest);
ada_test(:,1)=sign(Htest*alpha');主程序如下:% Adaboost(GDA, KNN)
Xtrain = X;
Ytrain = Y;
iter = 1;
fm_=[];
for iter = 1:50
[~, ada_test(:,iter)] = adaboost(X, Y, Xtest);
fm_ = ;
end
= max(fm_);
ada_out = ada_test(:,iter);
= confusion_mat(Ytest,ada_out);
Fmeasure_Adaboost = Fmeasure(3)
Accuracy_Adaboost = Accuracy(3)注:
(1)输入参数,例如:X是320x2的矩阵、Y是320x1的矩阵、Xtest是81x2的矩阵,Ytest是81x1的矩阵;
(2)混淆矩阵confusion_mat的计算方法参考:http://halcom.cn/forum.php?mod=v ... ge=1&extra=#pid3748
楼主,要是多分类,怎么改这个程序啊 pengsky 发表于 2017-9-30 17:09
楼主,要是多分类,怎么改这个程序啊
那就直接改分类数啊 那个confusion_mat程序,只对分两类得进行预测,那么对于多分类,confusion_mat那个预测分类怎么改进? 多分类,改了分类数,那么主程序的confusion_mat的怎么改呀 pengsky 发表于 2017-10-1 21:35
那个confusion_mat程序,只对分两类得进行预测,那么对于多分类,confusion_mat那个预测分类怎么改进?
你仔细看看输入是什么吧!
页:
[1]