資源簡(jiǎn)介
PNN,smote,BP-AdaBoost等類別不平衡分類問題的算法實(shí)現(xiàn)
代碼片段和文件信息
clc
clear
load?final_features
load?final_mark
load?testdata
input_train?=?final_features‘;
output_train?=?final_mark‘;
input_test?=?testdata(:1:10)‘;
output_test?=?testdata(:11)‘;
a=input_train(:1:466);
for?j=1:5
????input(::j)=[a?input_train(:1600*(j-1)+467:1600*j+467)];
????output(::j)=[output_train(:1:466)?output_train(1600*(j-1)+467:1600*j+467)];
end
input(::6)=[a?input_train(:7318:8918)];
output(::6)=[output_train(1:466)?output_train(7318:8918)];
input(::7)=[a?input_train(:5718:7318)];
output(::7)=[output_train(1:466)?output_train(5718:7318)];
%%?弱分類器分類
K=7;
for?i=1:7
????input_tr?=?input(::i);
????output_tr?=?output(::i);
????%?權(quán)重初始化
????[mmnn]=size(input_tr);
????D(1:)=ones(1nn)/nn;
????%訓(xùn)練樣本歸一化
????[inputninputps]=mapminmax(input_tr);
????[outputnoutputps]=mapminmax(output_tr);
????error(i)=0;
????
????%BP神經(jīng)網(wǎng)絡(luò)構(gòu)建
????net=newff(inputnoutputn24{‘tansig‘?‘purelin‘}‘trainlm‘);
????net.trainParam.epochs=10;
????net.trainParam.lr=0.12;
????net.trainParam.goal=0.00004;
????
????%BP神經(jīng)網(wǎng)絡(luò)訓(xùn)練
????net=train(netinputnoutputn);
????
????%訓(xùn)練數(shù)據(jù)預(yù)測(cè)
????an1=sim(netinputn);
????test_simu1(i:)=mapminmax(‘reverse‘a(chǎn)n1outputps);
????
????%測(cè)試數(shù)據(jù)預(yù)測(cè)
????inputn_test?=mapminmax(‘a(chǎn)pply‘input_testinputps);
????an=sim(netinputn_test);
????test_simu(i:)=mapminmax(‘reverse‘a(chǎn)noutputps);
????
????%統(tǒng)計(jì)輸出效果
????kk1=find(test_simu1(i:)>0);
????kk2=find(test_simu1(i:)<0);
????
????aa(kk1)=1;
????aa(kk2)=-1;
????
????%統(tǒng)計(jì)錯(cuò)誤樣本數(shù)
????for?j=1:nn
????????if?aa(j)~=output_tr(j);
????????????error(i)=error(i)+D(ij);
????????end
????end
????
????%弱分類器i權(quán)重
????at(i)=0.5*log((1-error(i))/error(i));
????
????%更新D值
????for?j=1:nn
????????D(i+1j)=D(ij)*exp(-at(i)*aa(j)*test_simu1(ij));
????end
????
????%D值歸一化
????Dsum=sum(D(i+1:));
????D(i+1:)=D(i+1:)/Dsum;
????
end
%%?強(qiáng)分類器分類結(jié)果
output=sign(at*test_simu);
%%?分類結(jié)果統(tǒng)計(jì)
%統(tǒng)計(jì)強(qiáng)分類器每類分類錯(cuò)誤個(gè)數(shù)
kkk1=0;
kkk2=0;
for?j=1:2072
????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
kkk1
kkk2
disp(‘第一類分類錯(cuò)誤??第二類分類錯(cuò)誤??總錯(cuò)誤‘);
%?窗口顯示
disp([kkk1?kkk2?kkk1+kkk2]);
plot(output)
hold?on
plot(output_test‘g‘)
%統(tǒng)計(jì)弱分離器效果
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:2072
????????if?aa(j)~=output_test(j);
????????????error1(i)=error1(i)+1;
????????end
????end
end
disp(‘統(tǒng)計(jì)弱分類器分類效果‘);
error1
disp(‘強(qiáng)分類器分類誤差率‘)
(kkk1+kkk2)/2072
disp(‘弱分類器分類誤差率‘)
(sum(error1)/(K*2072))
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件????????1328??2020-09-08?18:58??SMOTEú?PNN+Adaboostú?\license.txt
?????文件??????291228??2020-09-08?18:58??SMOTEú?PNN+Adaboostú?\SMOTE.zip
?????文件????????2976??2020-09-08?18:58??SMOTEú?PNN+Adaboostú?\SMOTE\bp_adaboost.asv
?????文件????????2872??2020-09-08?18:58??SMOTEú?PNN+Adaboostú?\SMOTE\bp_adaboost.m
?????文件??????132927??2020-09-08?18:58??SMOTEú?PNN+Adaboostú?\SMOTE\final_features.mat
?????文件?????????280??2020-09-08?18:58??SMOTEú?PNN+Adaboostú?\SMOTE\final_mark.mat
?????文件???????14158??2020-09-08?18:58??SMOTEú?PNN+Adaboostú?\SMOTE\nearestneighbour.m
?????文件?????????102??2020-09-08?18:58??SMOTEú?PNN+Adaboostú?\SMOTE\newset.m
?????文件?????????774??2020-09-08?18:58??SMOTEú?PNN+Adaboostú?\SMOTE\PNN.m
?????文件?????????233??2020-09-08?18:58??SMOTEú?PNN+Adaboostú?\SMOTE\readme.txt
?????文件????????2614??2020-09-08?18:58??SMOTEú?PNN+Adaboostú?\SMOTE\SMOTE.m
?????文件???????30872??2020-09-08?18:58??SMOTEú?PNN+Adaboostú?\SMOTE\testdata.mat
?????文件??????121831??2020-09-08?18:58??SMOTEú?PNN+Adaboostú?\SMOTE\traindata.mat
評(píng)論
共有 條評(píng)論