溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

基于BP_Adaboost的強分類器設計是怎樣的

發(fā)布時間:2021-12-09 16:54:56 來源:億速云 閱讀:118 作者:柒染 欄目:大數(shù)據(jù)

本篇文章為大家展示了基于BP_Adaboost的強分類器設計是怎樣的,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

Adaboost是一種迭代算法,其核心思想是針對同一個訓練集訓練不同的分類器(弱分類器),然后把這些弱分類器集合起來,構成一個更強的最終分類器(強分類器)。

其算法本身是通過改變數(shù)據(jù)分布來實現(xiàn)的,它根據(jù)每次訓練集之中每個樣本的分類是否正確,以及上次的總體分類的準確率,來確定每個樣本的權值。將修改過權值的新數(shù)據(jù)集送給下層分類器進行訓練,最后將每次訓練得到的分類器融合起來,作為最后的決策分類器。


這里采用BP神經(jīng)網(wǎng)絡作為弱分類器,反復訓練BP神經(jīng)網(wǎng)絡預測樣本輸出,通過Adaboost算法得到多個BP神經(jīng)網(wǎng)絡弱分類器組成的強分類器。


%%清空環(huán)境變量

clc

clear

基于BP_Adaboost的強分類器設計是怎樣的  

%% 下載數(shù)據(jù)

load data input_train output_train input_test output_test


%% 權重初始化

[mm,nn]=size(input_train);

D(1,:)=ones(1,nn)/nn;


%% 弱分類器分類

K=10;

for i=1:K

    

    %訓練樣本歸一化

    [inputn,inputps]=mapminmax(input_train);

    [outputn,outputps]=mapminmax(output_train);

    error(i)=0;

    

    %BP神經(jīng)網(wǎng)絡構建

    net=newff(inputn,outputn,6);

    net.trainParam.epochs=5;

    net.trainParam.lr=0.1;

    net.trainParam.goal=0.00004;

    

    %BP神經(jīng)網(wǎng)絡訓練

    net=train(net,inputn,outputn);

基于BP_Adaboost的強分類器設計是怎樣的  

    %訓練數(shù)據(jù)預測

    an1=sim(net,inputn);

    test_simu1(i,:)=mapminmax('reverse',an1,outputps);

    

    %測試數(shù)據(jù)預測

    inputn_test =mapminmax('apply',input_test,inputps);

    an=sim(net,inputn_test);

    test_simu(i,:)=mapminmax('reverse',an,outputps);

    

    %統(tǒng)計輸出效果

    kk1=find(test_simu1(i,:)>0);

    kk2=find(test_simu1(i,:)<0);

    

    aa(kk1)=1;

    aa(kk2)=-1;

    

    %統(tǒng)計錯誤樣本數(shù)

    for j=1:nn

        if aa(j)~=output_train(j)

            error(i)=error(i)+D(i,j);

        end

    end

    

    %弱分類器i權重

    at(i)=0.5*log((1-error(i))/error(i));

    

    %更新D值

    for j=1:nn

        D(i+1,j)=D(i,j)*exp(-at(i)*aa(j)*test_simu1(i,j));

    end

    

    %D值歸一化

    Dsum=sum(D(i+1,:));

    D(i+1,:)=D(i+1,:)/Dsum;

    

end


%% 強分類器分類結果

output=sign(at*test_simu);


%% 分類結果統(tǒng)計

%統(tǒng)計強分類器每類分類錯誤個數(shù)

kkk1=0;

kkk2=0;

for j=1:350

    if output(j)==1

        if output(j)~=output_test(j)

            kkk1=kkk1+1;

        end

    end

    if output(j)==-1

        if output(j)~=output_test(j)

            kkk2=kkk2+1;

        end

    end

end


disp('第一類分類錯誤  第二類分類錯誤  總錯誤');

% 窗口顯示

disp([kkk1 kkk2 kkk1+kkk2]);

基于BP_Adaboost的強分類器設計是怎樣的  

plot(output)

hold on

plot(output_test,'g')


%統(tǒng)計弱分離器效果

for i=1:K

    error1(i)=0;

    kk1=find(test_simu(i,:)>0);

    kk2=find(test_simu(i,:)<0);

    

    aa(kk1)=1;

    aa(kk2)=-1;

    

    for j=1:350

        if aa(j)~=output_test(j)

            error1(i)=error1(i)+1;

        end

    end

end

disp('統(tǒng)計弱分類器分類效果');

disp(error1)


disp('強分類器分類誤差率')

disp((kkk1+kkk2)/350)


disp('弱分類器分類誤差率')

disp((sum(error1)/(K*350)))

上述內(nèi)容就是基于BP_Adaboost的強分類器設計是怎樣的,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI