首页 第29章 支持向量机的回归拟合——混凝土抗压强度预测

第29章 支持向量机的回归拟合——混凝土抗压强度预测

举报
开通vip

第29章 支持向量机的回归拟合——混凝土抗压强度预测第29章 支持向量机的回归拟合——混凝土抗压强度预测 该案例作者申明: 1:本人长期驻扎在此板块里,对该案例提问,做到有问必答。 2:此案例有配套的教学视频,视频下载请点击http://www.matlabsky.com/forum-91-1.html。 3:此案例为原创案例,转载请注明出处(《MATLAB智能算法30个案例分析》)。 4:若此案例碰巧与您的研究有关联,我们欢迎您提意见,要求等,我们考虑后可以加在案例里。 5:以下内容为初稿,与实际发行的书籍内容略有出入,请以书籍中的内容为...

第29章 支持向量机的回归拟合——混凝土抗压强度预测
第29章 支持向量机的回归拟合——混凝土抗压强度预测 该案例作者申明: 1:本人长期驻扎在此板块里,对该案例提问,做到有问必答。 2:此案例有配套的教学视频,视频下载请点击http://www.matlabsky.com/forum-91-1.html。 3:此案例为原创案例,转载请注明出处(《MATLAB智能算法30个案例分析》)。 4:若此案例碰巧与您的研究有关联,我们欢迎您提意见,要求等,我们考虑后可以加在案例里。 5:以下内容为初稿,与实际发行的书籍内容略有出入,请以书籍中的内容为准。 Contents · 清空环境变量 · 导入数据 · 数据归一化 · SVM模型创建/训练 · SVM仿真预测 · 绘图 · BP 神经网络 清空环境变量 clear all clc 导入数据 load concrete_data.mat % 随机产生训练集和测试集 n = randperm(size(attributes,2)); % 训练集——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))'; 数据归一化 % 训练集 [pn_train,inputps] = mapminmax(p_train'); pn_train = pn_train'; pn_test = mapminmax('apply',p_test',inputps); pn_test = pn_test'; % 测试集 [tn_train,outputps] = mapminmax(t_train'); tn_train = tn_train'; tn_test = mapminmax('apply',t_test',outputps); tn_test = tn_test'; SVM模型创建/训练 % 寻找最佳c参数/g参数 [c,g] = meshgrid(-10:0.5:10,-10:0.5:10); [m,n] = size(c); cg = zeros(m,n); 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(i,j)),' -g ',num2str(2^g(i,j) ),' -s 3 -p 0.1']; cg(i,j) = svmtrain(tn_train,pn_train,cmd); if cg(i,j) < error error = cg(i,j); bestc = 2^c(i,j); bestg = 2^g(i,j); end if abs(cg(i,j) - error) <= eps && bestc > 2^c(i,j) error = cg(i,j); bestc = 2^c(i,j); bestg = 2^g(i,j); end end end % 创建/训练SVM cmd = [' -t 2',' -c ',num2str(bestc),' -g ',num2str(bestg),' -s 3 -p 0.01']; model = svmtrain(tn_train,pn_train,cmd); SVM仿真预测 [Predict_1,error_1] = svmpredict(tn_train,pn_train,model); [Predict_2,error_2] = svmpredict(tn_test,pn_test,model); % 反归一化 predict_1 = mapminmax('reverse',Predict_1,outputps); predict_2 = mapminmax('reverse',Predict_2,outputps); % 结果对比 result_1 = [t_train predict_1]; result_2 = [t_test predict_2]; Mean squared error = 0.000646089 (regression) Squared correlation coefficient = 0.99688 (regression) Mean squared error = 0.00650706 (regression) Squared correlation coefficient = 0.981646 (regression) 绘图 figure(1) plot(1:length(t_train),t_train,'r-*',1:length(t_train),predict_1,'b:o') grid on legend('真实值','预测值') xlabel('样本编号') ylabel('耐压强度') string_1 = {'训练集预测结果对比'; ['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('真实值','预测值') xlabel('样本编号') ylabel('耐压强度') string_2 = {'测试集预测结果对比'; ['mse = ' num2str(error_2(2)) ' R^2 = ' num2str(error_2(3))]}; title(string_2) INCLUDEPICTURE "http://book.matlabsky.com/znsf/view/s29/main_02.png" \* MERGEFORMATINET BP 神经网络 % 数据转置 pn_train = pn_train'; tn_train = tn_train'; pn_test = pn_test'; tn_test = tn_test'; % 创建BP神经网络 net = newff(pn_train,tn_train,10); % 设置训练参数 net.trainParam.epcohs = 1000; net.trainParam.goal = 1e-3; net.trainParam.show = 10; net.trainParam.lr = 0.1; % 训练网络 net = train(net,pn_train,tn_train); % 仿真测试 tn_sim = sim(net,pn_test); % 均方误差 E = mse(tn_sim - tn_test); % 决定系数 N = size(t_test,1); 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_sim,outputps); % 绘图 figure(3) plot(1:length(t_test),t_test,'r-*',1:length(t_test),t_sim,'b:o') grid on legend('真实值','预测值') xlabel('样本编号') ylabel('耐压强度') string_3 = {'测试集预测结果对比(BP神经网络)'; ['mse = ' num2str(E) ' R^2 = ' num2str(R2)]}; title(string_3) 相关论坛: Matlab技术论坛:www.matlabsky.com %% 清空环境变量 clear all clc %% 导入数据 load concrete_data.mat % 随机产生训练集和测试集 n = randperm(size(attributes,2)); % 训练集——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))'; %% 数据归一化 % 训练集 [pn_train,inputps] = mapminmax(p_train'); pn_train = pn_train'; pn_test = mapminmax('apply',p_test',inputps); pn_test = pn_test'; % 测试集 [tn_train,outputps] = mapminmax(t_train'); tn_train = tn_train'; tn_test = mapminmax('apply',t_test',outputps); tn_test = tn_test'; %% SVM模型创建/训练 % 寻找最佳c参数/g参数 [c,g] = meshgrid(-10:0.5:10,-10:0.5:10); [m,n] = size(c); cg = zeros(m,n); 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(i,j)),' -g ',num2str(2^g(i,j) ),' -s 3 -p 0.1']; cg(i,j) = svmtrain(tn_train,pn_train,cmd); if cg(i,j) < error error = cg(i,j); bestc = 2^c(i,j); bestg = 2^g(i,j); end if abs(cg(i,j) - error) <= eps && bestc > 2^c(i,j) error = cg(i,j); bestc = 2^c(i,j); bestg = 2^g(i,j); end end end % 创建/训练SVM cmd = [' -t 2',' -c ',num2str(bestc),' -g ',num2str(bestg),' -s 3 -p 0.01']; model = svmtrain(tn_train,pn_train,cmd); %% SVM仿真预测 [Predict_1,error_1] = svmpredict(tn_train,pn_train,model); [Predict_2,error_2] = svmpredict(tn_test,pn_test,model); % 反归一化 predict_1 = mapminmax('reverse',Predict_1,outputps); predict_2 = mapminmax('reverse',Predict_2,outputps); % 结果对比 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('真实值','预测值') xlabel('样本编号') ylabel('耐压强度') string_1 = {'训练集预测结果对比'; ['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('真实值','预测值') xlabel('样本编号') ylabel('耐压强度') string_2 = {'测试集预测结果对比'; ['mse = ' num2str(error_2(2)) ' R^2 = ' num2str(error_2(3))]}; title(string_2) %% BP 神经网络 % 数据转置 pn_train = pn_train'; tn_train = tn_train'; pn_test = pn_test'; tn_test = tn_test'; % 创建BP神经网络 net = newff(pn_train,tn_train,10); % 设置训练参数 net.trainParam.epcohs = 1000; net.trainParam.goal = 1e-3; net.trainParam.show = 10; net.trainParam.lr = 0.1; % 训练网络 net = train(net,pn_train,tn_train); % 仿真测试 tn_sim = sim(net,pn_test); % 均方误差 E = mse(tn_sim - tn_test); % 决定系数 N = size(t_test,1); 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_sim,outputps); % 绘图 figure(3) plot(1:length(t_test),t_test,'r-*',1:length(t_test),t_sim,'b:o') grid on legend('真实值','预测值') xlabel('样本编号') ylabel('耐压强度') string_3 = {'测试集预测结果对比(BP神经网络)'; ['mse = ' num2str(E) ' R^2 = ' num2str(R2)]}; title(string_3)
本文档为【第29章 支持向量机的回归拟合——混凝土抗压强度预测】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_078116
暂无简介~
格式:doc
大小:101KB
软件:Word
页数:9
分类:互联网
上传时间:2012-04-10
浏览量:104