資源簡介
內(nèi)含SVM(支持向量機(jī))算法的實現(xiàn)回歸擬合,以混凝土抗壓強度預(yù)測為例,含具體代碼注釋

代碼片段和文件信息
%%?支持向量機(jī)的回歸擬合——混凝土抗壓強度預(yù)測
%%?清空環(huán)境變量
clear?all
clc
%%?導(dǎo)入數(shù)據(jù)
load?concrete_data.mat
%?隨機(jī)產(chǎn)生訓(xùn)練集和測試集
n?=?randperm(size(attributes2));
%?訓(xùn)練集——80個樣本
p_train?=?attributes(:n(1:80))‘;
t_train?=?strength(:n(1:80))‘;
%?測試集——23個樣本
p_test?=?attributes(:n(81:end))‘;
t_test?=?strength(:n(81:end))‘;
%%?數(shù)據(jù)歸一化
%?訓(xùn)練集
[pn_traininputps]?=?mapminmax(p_train‘);
pn_train?=?pn_train‘;
pn_test?=?mapminmax(‘a(chǎn)pply‘p_test‘inputps);
pn_test?=?pn_test‘;
%?測試集
[tn_trainoutputps]?=?mapminmax(t_train‘);
tn_train?=?tn_train‘;
tn_test?=?mapminmax(‘a(chǎn)pply‘t_test‘outputps);
tn_test?=?tn_test‘;
%%?SVM模型創(chuàng)建/訓(xùn)練
%?尋找最佳c參數(shù)/g參數(shù)
[cg]?=?meshgrid(-10:0.5:10-10:0.5:10);
[mn]?=?size(c);
cg?=?zeros(mn);
eps?=?10^(-4);
v?=?5;
bestc?=?0;
bestg?=?0;
error?=?Inf;
for?i?=?1:m
????for?j?=?1:n
????????cmd?=?[‘-v?‘num2str(v)‘?-t?2‘‘?-c?‘num2str(2^c(ij))‘?-g?‘num2str(2^g(ij)?)‘?-s?3?-p?0.1‘];
????????cg(ij)?=?svmtrain(tn_trainpn_traincmd);
????????if?cg(ij)?????????????error?=?cg(ij);
????????????bestc?=?2^c(ij);
????????????bestg?=?2^g(ij);
????????end
????????if?abs(cg(ij)?-?error)?<=?eps?&&?bestc?>?2^c(ij)
????????????error?=?cg(ij);
????????????bestc?=?2^c(ij);
????????????bestg?=?2^g(ij);
????????end
????end
end
%?創(chuàng)建/訓(xùn)練SVM??
cmd?=?[‘?-t?2‘‘?-c?‘num2str(bestc)‘?-g?‘num2str(bestg)‘?-s?3?-p?0.01‘];
model?=?svmtrain(tn_trainpn_traincmd);
%%?SVM仿真預(yù)測
[Predict_1error_1]?=?svmpredict(tn_trainpn_trainmodel);
[Predict_2error_2]?=?svmpredict(tn_testpn_testmodel);
%?反歸一化
predict_1?=?mapminmax(‘reverse‘Predict_1outputps);
predict_2?=?mapminmax(‘reverse‘Predict_2outputps);
%?結(jié)果對比
result_1?=?[t_train?predict_1];
result_2?=?[t_test?predict_2];
%%?繪圖
figure(1)
plot(1:length(t_train)t_train‘r-*‘1:length(t_train)predict_1‘b:o‘)
grid?on
legend(‘真實值‘‘預(yù)測值‘)
xlabel(‘樣本編號‘)
ylabel(‘耐壓強度‘)
string_1?=?{‘訓(xùn)練集預(yù)測結(jié)果對比‘;
???????????[‘mse?=?‘?num2str(error_1(2))?‘?R^2?=?‘?num2str(error_1(3))]};
title(string_1)
figure(2)
plot(1:length(t_test)t_test‘r-*‘1:length(t_test)predict_2‘b:o‘)
grid?on
legend(‘真實值‘‘預(yù)測值‘)
xlabel(‘樣本編號‘)
ylabel(‘耐壓強度‘)
string_2?=?{‘測試集預(yù)測結(jié)果對比‘;
???????????[‘mse?=?‘?num2str(error_2(2))?‘?R^2?=?‘?num2str(error_2(3))]};
title(string_2)
%%?BP?神經(jīng)網(wǎng)絡(luò)
%?數(shù)據(jù)轉(zhuǎn)置
pn_train?=?pn_train‘;
tn_train?=?tn_train‘;
pn_test?=?pn_test‘;
tn_test?=?tn_test‘;
%?創(chuàng)建BP神經(jīng)網(wǎng)絡(luò)
net?=?newff(pn_traintn_train10);
%?設(shè)置訓(xùn)練參數(shù)
net.trainParam.epcohs?=?1000;
net.trainParam.goal?=?1e-3;
net.trainParam.show?=?10;
net.trainParam.lr?=?0.1;
%?訓(xùn)練網(wǎng)絡(luò)
net?=?train(netpn_traintn_train);
%?仿真測試
tn_sim?=?sim(netpn_test);
%?均方誤差
E?=?mse(tn_sim?-?tn_test);
%?決定系數(shù)
N?=?size(t_test1);
R2=(N*sum(tn_sim.*tn_test)-sum(tn_sim)*sum(tn_test))^2/((N*sum((tn_sim).^2)-(sum(tn_sim))^2)*(N*sum((tn_test).^2)-(sum(tn_test))^2));?
%?反歸一化
t_sim?=?mapminmax(‘reverse‘tn_simoutputps);
%?繪圖
figure(3)
plot(1:length(t_test)t_test‘r-*‘1:length(t_test)t_sim‘b:o‘)
grid?on
legend(‘真實值‘‘預(yù)測
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????2286??2019-08-14?16:01??支持向量機(jī)的回歸擬合\concrete_data.mat
?????文件????????3364??2019-08-26?12:08??支持向量機(jī)的回歸擬合\main.m
?????目錄???????????0??2019-08-26?12:08??支持向量機(jī)的回歸擬合\
評論
共有 條評論