資源簡介
CS(布谷鳥算法)、PSO(粒子群優化算法)源碼中文逐行注釋,很好的學習材料。

代碼片段和文件信息
tic?%?計時器
%%?清空環境,準備數據
close?all
clear
clc
format?compact
%?載入測試數據wine其中包含的數據類別數為3;wine:178*13的矩陣wine_labes:178*1的列向量
load?wine
%?選定訓練集和測試集
%?將第一類的1-30第二類的60-95第三類的131-153做為訓練集
train_wine?=?[wine(1:30:);wine(60:95:);wine(131:153:)];
%?相應的訓練集的標簽也要分離出來
train_wine_labels?=?[wine_labels(1:30);wine_labels(60:95);wine_labels(131:153)];
%?將第一類的31-59第二類的96-130第三類的154-178做為測試集
test_wine?=?[wine(31:59:);wine(96:130:);wine(154:178:)];
%?相應的測試集的標簽也要分離出來
test_wine_labels?=?[wine_labels(31:59);wine_labels(96:130);wine_labels(154:178)];
%?數據預處理
%?數據預處理將訓練集和測試集歸一化到[01]區間
[mtrainntrain]?=?size(train_wine);
[mtestntest]?=?size(test_wine);
dataset?=?[train_wine;test_wine];
[dataset_scaleps]?=?mapminmax(dataset‘01);
dataset_scale?=?dataset_scale‘;
train_wine?=?dataset_scale(1:mtrain:);
test_wine?=?dataset_scale(?(mtrain+1):(mtrain+mtest):?);
%%?CS-SVM
time=20;
n=20;?%?n為巢穴數量
pa=0.25;?%?被宿主發現的概率
dim?=?2;?%?需要尋優的參數個數
Lb=[0.010.01];?%?設置參數下界
Ub=[100100];?%?設置參數上界
%?隨機初始化巢穴
nest=zeros(ndim);
for?i=1:n?%?遍歷每個巢穴
????nest(i:)=Lb+(Ub-Lb).*rand(size(Lb));?%?對每個巢穴,隨機初始化參數
end
fitness=ones(1n);?%?目標函數值初始化
[fminbestnestnestfitness]=get_best_nest_svm(nestnestfitnesstrain_wine_labelstrain_winetest_wine_labelstest_wine);?%?找出當前最佳巢穴和參數
%%?迭代開始
for?t=1:time
????new_nest=get_cuckoos(nestbestnestLbUb);?%?保留當前最優解,尋找新巢穴
????[~~nestfitness]=get_best_nest_svm(nestnew_nestfitnesstrain_wine_labelstrain_winetest_wine_labelstest_wine);?%?找出當前最佳巢穴和參數
????new_nest=empty_nests(nestLbUbpa);?%?發現并更新劣質巢穴
????%?找出當前最佳巢穴和參數
????[fnewbestnestfitness]=get_best_nest_svm(nestnew_nestfitnesstrain_wine_labelstrain_winetest_wine_labelstest_wine);?
????if?fnew ????????fmin=fnew;
????????bestnest=best?;
????end
end
%%?打印參數選擇結果
bestobjfun=fmin;
bestc=bestnest(1);
bestg=bestnest(2);
disp(‘打印參數選擇結果‘);
str=sprintf(‘Best?c?=?%g,Best?g?=?%g‘bestcbestg);
disp(str)
%%?利用最佳的參數進行SVM網絡訓練
cmd_gwosvm?=?[‘-c?‘num2str(bestc)‘?-g?‘num2str(bestg)];
model_gwosvm?=?svmtrain(train_wine_labelstrain_winecmd_gwosvm);
%%?SVM網絡預測
[predict_labelaccuracy]?=?svmpredict(test_wine_labelstest_winemodel_gwosvm);
%?打印測試集分類準確率
total?=?length(test_wine_labels);
right?=?sum(predict_label?==?test_wine_labels);
disp(‘打印測試集分類準確率‘);
str?=?sprintf(?‘Accuracy?=?%g%%?(%d/%d)‘accuracy(1)righttotal);
disp(str);
%%?結果分析
%?測試集的實際分類和預測分類圖
figure;
hold?on;
plot(test_wine_labels‘o‘);
plot(predict_label‘r*‘);
xlabel(‘測試集樣本‘‘FontSize‘12);
ylabel(‘類別標簽‘‘FontSize‘12);
legend(‘實際測試集分類‘‘預測測試集分類‘);
title(‘測試集的實際分類和預測分類圖‘‘FontSize‘12);
grid?on
snapnow
%%?顯示程序運行時間
toc
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2016-09-05?17:22??CS-SVM\
?????文件????????3051??2016-09-05?17:22??CS-SVM\CS_SVM_exmp.m
?????文件????????2716??2016-09-05?17:00??CS-SVM\CS_SVR_exmp.m
?????文件????????6483??2016-09-05?16:52??CS-SVM\cuckoo_ori_with_chinese_note.m
?????文件?????????999??2016-09-05?16:49??CS-SVM\empty_nests.m
?????文件?????????426??2016-09-05?16:49??CS-SVM\fobj.m
?????文件?????????676??2016-09-05?17:22??CS-SVM\get_best_nest.m
?????文件?????????698??2016-09-05?17:21??CS-SVM\get_best_nest_svm.m
?????文件????????1629??2016-09-05?16:49??CS-SVM\get_cuckoos.m
?????文件??????????70??2016-09-05?16:49??CS-SVM\mymae.m
?????文件??????????85??2016-09-05?16:49??CS-SVM\mymape.m
?????文件??????????74??2016-09-05?16:49??CS-SVM\mymse.m
?????文件?????????402??2016-09-05?17:13??CS-SVM\objfun.m
?????文件?????????376??2016-09-05?16:49??CS-SVM\simplebounds.m
?????文件???????20168??2016-09-05?17:17??CS-SVM\wine.mat
?????文件?????????447??2016-09-05?16:49??CS-SVM\wndspd.mat
?????目錄???????????0??2016-09-05?16:45??PSO-SVM\
?????文件?????????426??2016-09-05?16:14??PSO-SVM\fobj.m
?????文件?????????108??2016-09-05?15:04??PSO-SVM\fun.m
?????文件??????????70??2016-09-05?16:14??PSO-SVM\mymae.m
?????文件??????????85??2016-09-05?16:14??PSO-SVM\mymape.m
?????文件??????????74??2016-09-05?16:14??PSO-SVM\mymse.m
?????文件?????????402??2016-09-05?17:12??PSO-SVM\objfun.m
?????文件????????4106??2016-09-05?16:43??PSO-SVM\PSO_SVM_exmp.m
?????文件????????3814??2016-09-05?17:00??PSO-SVM\PSO_SVR_exmp.m
?????文件????????2276??2016-09-05?16:11??PSO-SVM\pso_test.m
?????文件???????20168??2016-09-05?16:37??PSO-SVM\wine.mat
?????文件?????????447??2016-09-05?16:14??PSO-SVM\wndspd.mat
- 上一篇:計算機操作系統 翟一鳴 清華大學后題答案
- 下一篇:步進電機的選型與計算
評論
共有 條評論