《MATLAB智能算法30个案例》:第26章 有导师学习神经网络的分类——鸢尾花种类识别
《MATLAB智能算法30个案例》:第26章 有导师学习神经网络的分类——鸢尾花种类识别
- 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
%% 第26章 有导师学习神经网络的分类——鸢尾花种类识别
% <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 iris_data.mat
% 随机产生训练集和测试集
P_train = [];
T_train = [];
P_test = [];
T_test = [];
for i = 1:3temp_input = features((i-1)*50+1:i*50,:);temp_output = classes((i-1)*50+1:i*50,:);n = randperm(50);% 训练集——120个样本P_train = [P_train temp_input(n(1:40),:)'];T_train = [T_train temp_output(n(1:40),:)'];% 测试集——30个样本P_test = [P_test temp_input(n(41:50),:)'];T_test = [T_test temp_output(n(41:50),:)'];
end%% 模型建立
result_grnn = [];
result_pnn = [];
time_grnn = [];
time_pnn = [];
for i = 1:4for j = i:4p_train = P_train(i:j,:);p_test = P_test(i:j,:);%% GRNN创建及仿真测试t = cputime;% 创建网络net_grnn = newgrnn(p_train,T_train);% 仿真测试t_sim_grnn = sim(net_grnn,p_test);T_sim_grnn = round(t_sim_grnn);t = cputime - t;time_grnn = [time_grnn t];result_grnn = [result_grnn T_sim_grnn'];%% PNN创建及仿真测试t = cputime;Tc_train = ind2vec(T_train);% 创建网络net_pnn = newpnn(p_train,Tc_train);% 仿真测试Tc_test = ind2vec(T_test);t_sim_pnn = sim(net_pnn,p_test);T_sim_pnn = vec2ind(t_sim_pnn);t = cputime - t;time_pnn = [time_pnn t];result_pnn = [result_pnn T_sim_pnn'];end
end%% 性能评价% 正确率accuracy
accuracy_grnn = [];
accuracy_pnn = [];
time = [];
for i = 1:10accuracy_1 = length(find(result_grnn(:,i) == T_test'))/length(T_test);accuracy_2 = length(find(result_pnn(:,i) == T_test'))/length(T_test);accuracy_grnn = [accuracy_grnn accuracy_1];accuracy_pnn = [accuracy_pnn accuracy_2];
end
% 结果对比
result = [T_test' result_grnn result_pnn]
accuracy = [accuracy_grnn;accuracy_pnn]
time = [time_grnn;time_pnn]
%% 绘图
figure(1)
plot(1:30,T_test,'bo',1:30,result_grnn(:,4),'r-*',1:30,result_pnn(:,4),'k:^')
grid on
xlabel('测试集样本编号')
ylabel('测试集样本类别')
string = {'测试集预测结果对比(GRNN vs PNN)';['正确率:' num2str(accuracy_grnn(4)*100) '%(GRNN) vs ' num2str(accuracy_pnn(4)*100) '%(PNN)']};
title(string)
legend('真实值','GRNN预测值','PNN预测值')
figure(2)
plot(1:10,accuracy(1,:),'r-*',1:10,accuracy(2,:),'b:o')
grid on
xlabel('模型编号')
ylabel('测试集正确率')
title('10个模型的测试集正确率对比(GRNN vs PNN)')
legend('GRNN','PNN')
figure(3)
plot(1:10,time(1,:),'r-*',1:10,time(2,:),'b:o')
grid on
xlabel('模型编号')
ylabel('运行时间(s)')
title('10个模型的运行时间对比(GRNN vs PNN)')
legend('GRNN','PNN')
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>
添加完毕,点击“运行”,开始仿真,输出仿真结果如下:
result =1 至 17 列1 2 1 1 1 2 1 1 1 1 1 1 1 1 1 1 11 2 2 1 1 2 1 1 1 1 2 1 1 1 1 1 11 2 2 1 1 2 1 1 1 1 1 2 1 1 1 1 11 2 1 1 1 2 1 1 1 1 1 1 1 1 1 3 11 2 2 1 1 2 1 1 1 1 1 1 1 1 1 1 11 2 2 1 1 2 1 1 1 1 1 1 1 1 1 2 11 2 2 1 1 2 1 1 1 1 1 2 1 1 1 1 11 2 2 1 1 2 1 1 1 1 1 2 1 1 1 1 11 1 1 1 1 2 1 1 1 1 1 1 1 1 1 2 11 1 1 1 1 2 1 1 1 1 1 1 1 1 1 3 12 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 22 2 2 2 2 2 2 2 2 2 2 1 2 2 2 2 22 2 2 2 2 2 2 2 2 2 2 2 3 2 2 1 22 2 2 2 2 2 2 2 2 2 2 2 3 2 2 3 22 2 2 2 2 2 2 2 2 2 2 3 3 3 3 2 32 2 2 2 2 2 2 2 2 2 2 2 3 2 2 3 22 2 2 2 2 2 2 2 2 2 2 3 3 2 2 2 22 2 2 2 2 2 2 2 2 2 2 2 3 2 2 2 22 2 2 2 2 2 2 2 2 2 2 3 3 2 2 3 22 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 23 2 2 3 3 2 3 3 3 3 2 3 3 3 3 2 33 3 3 3 3 2 3 3 3 3 2 3 3 3 3 2 33 3 3 3 3 2 3 3 3 3 3 3 3 3 3 1 33 3 3 3 3 2 3 3 3 3 3 3 3 3 3 2 33 2 2 3 3 2 3 3 3 3 3 3 3 3 3 1 33 2 2 3 3 2 3 3 3 3 2 3 3 3 2 2 33 3 3 3 3 2 3 3 3 3 2 3 3 3 3 2 33 2 2 3 3 2 3 3 3 3 2 3 3 3 3 2 33 2 2 2 2 2 2 3 2 3 2 2 2 3 3 2 23 2 2 2 2 2 2 2 2 2 2 2 2 2 3 2 218 至 21 列1 1 1 11 1 1 11 1 1 11 1 1 11 1 1 11 1 1 11 1 1 11 1 1 11 1 1 11 1 1 12 2 2 22 2 2 22 2 2 22 2 2 22 3 2 22 2 2 22 2 2 22 2 2 22 2 2 22 2 2 23 3 3 33 3 3 33 3 3 33 3 3 33 3 3 32 3 2 23 3 3 23 3 3 33 3 3 33 2 3 3accuracy =0.5333 0.6000 0.9333 0.9333 0.3333 0.9333 0.9667 0.9333 0.9667 0.73330.7000 0.7000 0.9333 0.9333 0.3667 0.9000 0.9667 0.9333 0.9667 0.9333time =1.4664 0.0780 0.0624 0.0468 0.0624 0.0468 0.0468 0.0468 0.0468 0.10920.2184 0.0936 0.0936 0.1092 0.0624 0.0624 0.0624 0.0624 0.0468 0.0624时间已过 3.694968 秒。
3. 小结
神经网络的学习规则又称神经网络的训练算法,用来计算更新神经网络的权值和阈值。学习规则有两大类别;有导师学习和无导师学习。在有导师学习中,需要为学习规则提供一系列正确的网络输入/输出对(即训练样本),当网络输人时,将网络输出与相对应的期望值进行比较﹐然后应用学习规则调整权值和阈值,使网络的输出接近于期望值。而在无导师学习中,权值和阈值的调整只与网络输人有关系,没有期望值﹐这类算法大多用聚类法,将输人模式归类于有限的类别。对本章内容感兴趣或者想充分学习了解的,建议去研习书中第二十六章节的内容。后期会对其中一些知识点在自己理解的基础上进行补充,欢迎大家一起学习交流。
《MATLAB智能算法30个案例》:第26章 有导师学习神经网络的分类——鸢尾花种类识别相关推荐
- 《MATLAB智能算法30个案例》:第19章 基于模拟退火算法的TSP算法
<MATLAB智能算法30个案例>:第19章 基于模拟退火算法的TSP算法 1. 前言 2. MATLAB 仿真示例 3. 小结 1. 前言 <MATLAB智能算法30个案例分析&g ...
- 《MATLAB智能算法30个案例》:第20章 基于遗传模拟退火算法的聚类算法
<MATLAB智能算法30个案例>:第20章 基于遗传模拟退火算法的聚类算法 1. 前言 2. MATLAB 仿真示例 3. 小结 1. 前言 <MATLAB智能算法30个案例分析& ...
- 《MATLAB智能算法30个案例》:第4章 基于遗传算法的TSP算法
<MATLAB智能算法30个案例>:第4章 基于遗传算法的TSP算法 1. 前言 2. MATLAB 仿真示例 3. 小结 1. 前言 <MATLAB智能算法30个案例分析>是 ...
- 《MATLAB智能算法30个案例》:第28章 支持向量机的分类——基于乳腺组织电阻抗特性的乳腺癌诊断
<MATLAB智能算法30个案例>:第28章 支持向量机的分类--基于乳腺组织电阻抗特性的乳腺癌诊断 1. 前言 2. MATLAB 仿真示例 3. 小结 1. 前言 <MATLAB ...
- 《MATLAB智能算法30个案例》:第14章 基于粒子群算法的PID控制器优化设计
<MATLAB智能算法30个案例>:第14章 基于粒子群算法的PID控制器优化设计 1. 前言 2. MATLAB 仿真示例 3. 小结 1. 前言 <MATLAB智能算法30个案例 ...
- 《MATLAB智能算法30个案例》:第8章 基于量子遗传算法的函数寻优算法
<MATLAB智能算法30个案例>:第8章 基于量子遗传算法的函数寻优算法 1. 前言 2. MATLAB 仿真示例 3. 小结 1. 前言 <MATLAB智能算法30个案例分析&g ...
- 《MATLAB智能算法30个案例》:第22章 蚁群算法的优化计算——旅行商问题(TSP)优化
@[TOC](<MATLAB智能算法30个案例>:第22章 蚁群算法的优化计算--旅行商问题(TSP)优化) 1. 前言 <MATLAB智能算法30个案例分析>是2011年7月 ...
- 《MATLAB智能算法30个案例》:第27章 无导师学习神经网络的分类——矿井突水水源判别
<MATLAB智能算法30个案例>:第27章 无导师学习神经网络的分类--矿井突水水源判别 1. 前言 2. MATLAB 仿真示例 3. 小结 1. 前言 <MATLAB智能算法3 ...
- MATLAB智能算法30个案例分析pdf
下载地址:网盘下载 MATLAB智能算法30个案例分析,ISBN:9787512403512,作者:史峰,王辉 等编著 下载地址:网盘下载 转载于:https://www.cnblogs.com/cf ...
最新文章
- ES6中的Promise使用方法与总结
- php7.0支持调用lua脚本
- 【java并发编程艺术学习】(一)初衷、感想与笔记目录
- 说三件切身利益的大事!一定要看 减少损失
- linux搭建oracle脚本,Linux脚本自动安装Oracle
- linux使用苹果字体,Ubuntu 8.04字体美化之安装苹果丽黑字体教程(图)
- 【译】WebSocket协议第四章——连接握手(Opening Handshake)
- python软件下载教程-使用最方便的计算机编程软件,Python下载使用完美教程
- python3入门代码-Python3 入门教程 简单但比较不错
- 【元胞自动机】基于matlab元胞自动机考虑驾驶行为的自动—求解手动驾驶混合交通流问题【含Matlab源码 2060期】
- Bandicam录制视频
- Lambda表达式的几种简化形式
- C/C++编程学习 - 第5周 ⑤ 人见人爱A+B
- k2000显卡相当于gtx_电脑中的显卡是什么样干什么样的?NVDIA推出的两块Quadro显卡K1000M和K2000M性能究竟差多少...
- 面试题:重写equals方法为什么通常会重写hashcode方法?
- 【项目实战】Python基于BP神经网络算法实现家用热水器用户行为分析与事件识别
- 开设生物医学工程的高校(按区域划分)
- 传奇登录器自动获取服务器,gom引擎配置登录器补丁读取规则的说明
- android 磁力解析,关于手机端磁力下载,看这篇教程就够了
- 2023-6-1第三十二天
热门文章
- 基于QT的智能饮料机终端库存监控系统(qt5.9.2 mingw53_32 + win10 + SeetaFaceEngine + opencv3.3)
- 提升自己捷径就在这里..
- SQL中的ALL、ANY和SOME
- jzoj 1434. 灌水
- 计算机关机的方法,电脑关机方式有几种 电脑关机方式介绍【详解】
- wireshark过滤telnet
- 双通道局域网的搭建与互联互通
- 宝宝的成长脚印3/26
- 科普 | 3.5mm的国标耳机和美标耳机
- 易乐游装在云服务器_无盘公包2021正式版(网维大师、云更新、易乐游、马蹄)【原来不帅】...