博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[数学建模(四)]MATLAB神经网络工具箱的简单应用
阅读量:5741 次
发布时间:2019-06-18

本文共 2505 字,大约阅读时间需要 8 分钟。

问题:蠓虫分类问题

1 问题描述

蠓虫分类问题可概括叙述如下:生物学家试图对两种蠓虫(Af 与Apf)进行鉴别,依据的资料是触角和翅膀的长度,已经测得了9 只Af 和6 只Apf 的数据如下:

 Af: (1.24,1.27),(1.36,1.74),(1.38,1.64),(1.38,1.82),(1.38,1.90),(1.40,1.70),(1.48,1.82),(1.54,1.82),(1.56,2.08).

Apf: (1.14,1.82),(1.18,1.96),(1.20,1.86),(1.26,2.00),(1.28,2.00),(1.30,1.96).

现在的问题是:
(i)根据如上资料,如何制定一种方法,正确地区分两类蠓虫。
(ii)对触角和翼长分别为(1.24,1.80),(1.28,1.84)与(1.40,2.04)的3 个标本,用所得
到的方法加以识别。

已知的蠓虫数据分布如图(圆圈为Apf类,六角为Af,米字型为未知型)

2.MATLAB 实现

clear

p1=[1.24,1.27;1.36,1.74;1.38,1.64;1.38,1.82;1.38,1.90;1.40,1.70;1.48,1.82;1.54,1.82;1.56,2.08];  %Af
p2=[1.14,1.82;1.18,1.96;1.20,1.86;1.26,2.00;1.28,2.00;1.30,1.96];                                %Apf
p=[p1;p2]';
pr=minmax(p);
goal=[ones(1,9),zeros(1,6);zeros(1,9),ones(1,6)]; %p1类为1;p2类为0
x=[1.24 1.80;1.28 1.84;1.40 2.04];

for i=1:9

plot(p1(i,1),p1(i,2),'h')
hold on
end

for i=1:6

plot(p2(i,1),p2(i,2),'o');
end

for i=1:3

plot(x(i,1),x(i,2),'*')
text (x(i,1),x(i,2),'?');
end

%Rx2的矩阵以定义R个输入向量的最小值和最大值;设定每层神经元个数的数组

net=newff(pr,[3,2],{'logsig','logsig'});
net.trainParam.show = 10; % 训练显示间隔
net.trainParam.lr = 0.05; %学习步长
net.trainParam.goal = 1e-10; %最小均方误差
net.trainParam.epochs = 50000; %最大训练次数
net = train(net,p,goal); %训练神经网络
y0=sim(net,p); %对已知的数据进行验证
x=x';
y=sim(net,x); %对未知的数据进行分类

 3 结果

目标标签设置

goal =

1 1 1 1 1 1 1 1 1 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 1 1 1 1 1 1

已知数据训练后:

y0 =

1 至 10 列                                                                                                         11 至 15 列

0.9999 0.9999 0.9999 0.9998 0.9995 0.9999 0.9999 0.9999 0.9999 0.0001 0.0001 0.0001 0.0001 0.0002 0.0006

0.0001 0.0001 0.0001 0.0002 0.0005 0.0001 0.0001 0.0001 0.0001 0.9999 0.9999 0.9999 0.9999 0.9998 0.9994

未知数据分类: 

y =

0.0004 0.0036 0.9899

0.9996 0.9964 0.0101

从结果可知:(1.24,1.80),(1.28,1.84)属于Apf,(1.40,2.04)属于Af

4 工具箱界面简介

更具体的介绍详见:http://blog.csdn.net/q1302182594/article/details/8790613

神经网络训练参数说明:http://blog.sina.com.cn/s/blog_5c9288aa0101gsu2.html

5 拓展

可以通过蒙卡特罗法产生大量数据点,通过神经网络进行分类。

因为有一些数据点分布在神经网络的分界面附近,因此可以大约知道分界面的位置。

N=1000;k1 = 1.1 + (1.6-1.1).*rand(1,N);k2 = 1.2 + (2.1-1.2).*rand(1,N);z=[k1;k2];z1=sim(net,z);for i=1:1000    if z1(1,i)<0.5         plot(z(1,i),z(2,i),'o');            hold on    end        if z1(1,i)>0.5         plot(z(1,i),z(2,i),'h');    endend

 

6.非监督学习

clearp1=[1.24,1.27;1.36,1.74;1.38,1.64;1.38,1.82;1.38,1.90; 1.40,1.70;1.48,1.82;1.54,1.82;1.56,2.08];p2=[1.14,1.82;1.18,1.96;1.20,1.86;1.26,2.00; 1.28,2.00;1.30,1.96];p=[p1;p2]'pr=minmax(p)goal=[ones(1,9),zeros(1,6);zeros(1,9),ones(1,6)]net = newlvq(pr,4,[0.6,0.4])net = train(net,p,goal)Y = sim(net,p)x=[1.24 1.80;1.28 1.84;1.40 2.04]'sim(net,x)

 

转载于:https://www.cnblogs.com/youngsea/p/7471732.html

你可能感兴趣的文章
带你实现开发者头条APP(四)---首页优化(加入design包)
查看>>
as.vector 矩阵向量化
查看>>
web service 自定义拦截器
查看>>
[LeetCode]1.Two Sum
查看>>
Java FP: Java中函数式编程的谓词函数(Predicates)第一部分
查看>>
【程序5大区】堆、栈、自由存储区、全局/静态存储区、常量存储区
查看>>
docker based cloud thinking
查看>>
Scala Learning(1): 使用Pattern Matching表达JSON
查看>>
数据挖掘中的概念描述
查看>>
[LeetCode]77.Combinations
查看>>
BeanMapping发布1.0.1版本
查看>>
细品这杯香浓的咖啡——阿里中间件高级专家沈询的Java之旅
查看>>
激活效能,CODING 敏捷研发模块上线
查看>>
docsify 4.0 发布,支持服务端渲染(SSR)
查看>>
讲人话系列:分布式事务00:绪论
查看>>
React源码解析(一):JSX到javascript
查看>>
React源码解析(三):react-component
查看>>
android studio 连接Mumu模拟器
查看>>
促销系统的设计
查看>>
Chrome好用的插件
查看>>