《MATLAB智能算法30个案例》:第29章 支持向量机的回归拟合——混凝土抗压强度预测

  • 1. 前言
  • 2. MATLAB 仿真示例
  • 3. 小结

1. 前言

《MATLAB智能算法30个案例分析》是2011年7月1日由北京航空航天大学出版社出版的图书,作者是郁磊、史峰、王辉、胡斐。本书案例是各位作者多年从事算法研究的经验总结。书中所有案例均因国内各大MATLAB技术论坛网友的切身需求而精心设计,其中不少案例所涉及的内容和求解方法在国内现已出版的MATLAB书籍中鲜有介绍。《MATLAB智能算法30个案例分析》采用案例形式,以智能算法为主线,讲解了遗传算法、免疫算法、退火算法、粒子群算法、鱼群算法、蚁群算法和神经网络算法等最常用的智能算法的MATLAB实现。

本书共给出30个案例,每个案例都是一个使用智能算法解决问题的具体实例,所有案例均由理论讲解、案例背景、MATLAB程序实现和扩展阅读四个部分组成,并配有完整的原创程序,使读者在掌握算法的同时更能快速提高使用算法求解实际问题的能力。《MATLAB智能算法30个案例分析》可作为本科毕业设计、研究生项目设计、博士低年级课题设计参考书籍,同时对广大科研人员也有很高的参考价值。

《MATLAB智能算法30个案例分析》与《MATLAB 神经网络43个案例分析》一样,都是由北京航空航天大学出版社出版,其中的智能算法应该是属于神经网络兴起之前的智能预测分类算法的热门领域,在数字信号处理,如图像和语音相关方面应用较为广泛。本系列文章结合MATLAB与实际案例进行仿真复现,有不少自己在研究生期间与工作后的学习中有过相关学习应用,这次复现仿真示例进行学习,希望可以温故知新,加强并提升自己在智能算法方面的理解与实践。下面开始进行仿真示例,主要以介绍各章节中源码应用示例为主,本文主要基于MATLAB2015b(32位)平台仿真实现,这是本书第二十九章支持向量机的回归拟合——混凝土抗压强度预测示例,话不多说,开始!

2. MATLAB 仿真示例

打开MATLAB,点击“主页”,点击“打开”,找到示例文件

选中main.m,点击“打开”,main.m源码如下:

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%功能: 支持向量机的回归拟合——混凝土抗压强度预测示例
%环境:Win7,Matlab2015b
%Modi: C.S
%时间:2022-07-09
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% 清空环境
clc
clear all
close alltic
%% 第29章 支持向量机的回归拟合——混凝土抗压强度预测
% <html>
% <table border="0" width="600px" id="table1">   <tr>      <td><b><font size="2">该案例作者申明:</font></b></td>    </tr> <tr><td><span class="comment"><font size="2">1:本人长期驻扎在此<a target="_blank" href="http://www.matlabsky.com/forum-78-1.html"><font color="#0000FF">板块</font></a>里,对该案例提问,做到有问必答。</font></span></td></tr><tr> <td><span class="comment"><font size="2">2</font><font size="2">:此案例有配套的教学视频,视频下载请点击<a href="http://www.matlabsky.com/forum-91-1.html">http://www.matlabsky.com/forum-91-1.html</a></font><font size="2">。 </font></span></td> </tr>         <tr>      <td><span class="comment"><font size="2">       3:此案例为原创案例,转载请注明出处(《MATLAB智能算法30个案例分析》)。</font></span></td>   </tr>     <tr>      <td><span class="comment"><font size="2">       4:若此案例碰巧与您的研究有关联,我们欢迎您提意见,要求等,我们考虑后可以加在案例里。</font></span></td>    </tr> <tr>      <td><span class="comment"><font size="2">       5:以下内容为初稿,与实际发行的书籍内容略有出入,请以书籍中的内容为准。</font></span></td>  </tr> </table>
% </html>%% 导入数据
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:mfor j = 1:ncmd = ['-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) < errorerror = cg(i,j);bestc = 2^c(i,j);bestg = 2^g(i,j);endif 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);endend
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)
toc
%%
% <html>
% <table width="656" align="left" > <tr><td align="center"><p align="left"><font size="2">相关论坛:</font></p><p align="left"><font size="2">Matlab技术论坛:<a href="http://www.matlabsky.com">www.matlabsky.com</a></font></p><p align="left"><font size="2">M</font><font size="2">atlab函数百科:<a href="http://www.mfun.la">www.mfun.la</a></font></p></td>    </tr></table>
% </html>

添加完毕,点击“运行”,开始仿真,输出仿真结果如下:

Mean squared error = 0.000374749 (regression)
Squared correlation coefficient = 0.998009 (regression)
Mean squared error = 0.00185227 (regression)
Squared correlation coefficient = 0.992291 (regression)
警告: 'epcohs' is not a legal parameter.
> In nntest.param>do_test (line 63)In nntest.param (line 6)In network/subsasgn>setTrainParam (line 2030)In network/subsasgn>network_subsasgn (line 486)In network/subsasgn (line 11)In main (line 114)
警告: 'epcohs' is not a legal parameter.
> In nntest.param>do_test (line 63)In nntest.param (line 6)In network/subsasgn>setTrainParam (line 2030)In network/subsasgn>network_subsasgn (line 486)In network/subsasgn (line 11)In main (line 115)
警告: 'epcohs' is not a legal parameter.
> In nntest.param>do_test (line 63)In nntest.param (line 6)In network/subsasgn>setTrainParam (line 2030)In network/subsasgn>network_subsasgn (line 486)In network/subsasgn (line 11)In main (line 116)
警告: 'epcohs' is not a legal parameter.
> In nntest.param>do_test (line 63)In nntest.param (line 6)In network/subsasgn>setTrainParam (line 2030)In network/subsasgn>network_subsasgn (line 486)In network/subsasgn (line 11)In main (line 117)
时间已过 10.313087 秒。





分别点击Performance,Training State,Regression可得如下图示:


3. 小结

支持向量机(Support Vector Machine, SVM)是一类按监督学习(supervised learning)方式对数据进行二元分类的广义线性分类器(generalized linear classifier),其决策边界是对学习样本求解的最大边距超平面(maximum-margin hyperplane)。SVM其他相关仿真示例也比较多,具体专栏链接见文末。对本章内容感兴趣或者想充分学习了解的,建议去研习书中第二十九章节的内容。后期会对其中一些知识点在自己理解的基础上进行补充,欢迎大家一起学习交流。

视觉机器学习20讲-MATLAB源码示例
MATLAB 神经网络43个案例分析

《MATLAB智能算法30个案例》:第29章 支持向量机的回归拟合——混凝土抗压强度预测相关推荐

  1. 【老生谈算法】matlab实现支持向量机的回归拟合——混凝土抗压强度预测

    Matlab实现支持向量机的回归拟合--混凝土抗压强度预测 1.文档下载: 本算法已经整理成文档如下,有需要的朋友可以点击进行下载 说明 文档(点击下载) 本算法文档 [老生谈算法]matlab实现支 ...

  2. 《MATLAB智能算法30个案例》:第19章 基于模拟退火算法的TSP算法

    <MATLAB智能算法30个案例>:第19章 基于模拟退火算法的TSP算法 1. 前言 2. MATLAB 仿真示例 3. 小结 1. 前言 <MATLAB智能算法30个案例分析&g ...

  3. 《MATLAB智能算法30个案例》:第20章 基于遗传模拟退火算法的聚类算法

    <MATLAB智能算法30个案例>:第20章 基于遗传模拟退火算法的聚类算法 1. 前言 2. MATLAB 仿真示例 3. 小结 1. 前言 <MATLAB智能算法30个案例分析& ...

  4. 《MATLAB智能算法30个案例》:第4章 基于遗传算法的TSP算法

    <MATLAB智能算法30个案例>:第4章 基于遗传算法的TSP算法 1. 前言 2. MATLAB 仿真示例 3. 小结 1. 前言 <MATLAB智能算法30个案例分析>是 ...

  5. 《MATLAB智能算法30个案例》:第14章 基于粒子群算法的PID控制器优化设计

    <MATLAB智能算法30个案例>:第14章 基于粒子群算法的PID控制器优化设计 1. 前言 2. MATLAB 仿真示例 3. 小结 1. 前言 <MATLAB智能算法30个案例 ...

  6. 《MATLAB智能算法30个案例》:第8章 基于量子遗传算法的函数寻优算法

    <MATLAB智能算法30个案例>:第8章 基于量子遗传算法的函数寻优算法 1. 前言 2. MATLAB 仿真示例 3. 小结 1. 前言 <MATLAB智能算法30个案例分析&g ...

  7. 《MATLAB智能算法30个案例》:第22章 蚁群算法的优化计算——旅行商问题(TSP)优化

    @[TOC](<MATLAB智能算法30个案例>:第22章 蚁群算法的优化计算--旅行商问题(TSP)优化) 1. 前言 <MATLAB智能算法30个案例分析>是2011年7月 ...

  8. 《MATLAB智能算法30个案例》:第27章 无导师学习神经网络的分类——矿井突水水源判别

    <MATLAB智能算法30个案例>:第27章 无导师学习神经网络的分类--矿井突水水源判别 1. 前言 2. MATLAB 仿真示例 3. 小结 1. 前言 <MATLAB智能算法3 ...

  9. MATLAB智能算法30个案例分析pdf

    下载地址:网盘下载 MATLAB智能算法30个案例分析,ISBN:9787512403512,作者:史峰,王辉 等编著 下载地址:网盘下载 转载于:https://www.cnblogs.com/cf ...

最新文章

  1. 视频采集-非DICOM影像设备转DICOM标准的解决方案
  2. WWDC 2018:iOS 12 通知的新特性
  3. JPA_登录校验Controller代码
  4. 05,pytorch_手写数字案例
  5. poj 2251 Dungeon Master (三维bfs)
  6. webpack中实现按需加载
  7. 【mysql技术内幕1】mysql基础架构-一条SQL查询语句是如何执行的
  8. 计算机网络实验五静态路由与RIP协议,实验锐捷实训8-1--配置静态路由和rip协议...
  9. rotate 3D 篇二
  10. TestNG套件测试
  11. Mac技巧,更改Mac桌面图片
  12. ssm社区线上超市购物系统毕业设计-附源码211704
  13. HUAWEI AC+AP设备配置
  14. 自定义B站视频播放速度
  15. java j2ee j2se_Java EE / J2EE与J2SE / JDK版本之间的关联
  16. APP开发者必备,主流安卓应用商店开发者公司账号注册
  17. imovie导入媒体没有声音的解决办法
  18. 操作系统的中的 IO
  19. UE4VR学习笔记3
  20. Jetson Nano入门教程:硬件篇+视频学习教程

热门文章

  1. TP5 paginate 分页
  2. 类似微信支付宝密码控件
  3. c语言scanf与gets区别,C语言 scanf()和gets()函数的区别
  4. 【代码注释】Scan2CAD:Learning CAD Model Alignment in RGB-DScans 论文代码注释
  5. 基于Python股票编程交易接口的实现与应用
  6. Java实现 LeetCode 402 移掉K位数字
  7. python怎么导入第三方库完整教程_python怎么导入第三方工具库
  8. EMC (DMX) solutions Enabler Symmetrix Array Management CLI Version 6.5
  9. Java Swing 贪吃蛇小游戏
  10. 方文山、周杰伦那些漂亮得让人落泪的句子……