BP网络实例(Iris数据)

将Iris数据分成训练与测试两部分,这批Iris花可分为3个品种,分别用123代表,现需要对其进行分类。不同品种的Iris花的花萼长度、花萼宽度、花瓣长度、花瓣宽度会有差异。我们现有一批已知品种的Iris花的花萼长度、花萼宽度、花瓣长度、花瓣宽度的数据。

大致流程:

读取训练数据→归一化→构造期望输出矩阵(01矩阵)→创建神经网络并设置参数→通过输入与期望输出值训

练→读取测试数据并归一化→仿真

clc
[f1,f2,f3,f4,class]=textread(‘flodata.txt‘,‘%f%f%f%f%f‘,‘delimiter‘,‘,‘);%种类用123分别代表三种
[input,mini,maxi]=premnmx([f1,f2,f3,f4]‘);%归一化
%构造输出矩阵
s=length(class);
output=zeros(s,3);
for i=1:s
    output(i,class(i))=1;%对于每行的三个数,只有该种类为1,其他为0
end
%创建神经网络
net=newff(minmax(input),[10 3],{‘logsig‘ ‘purelin‘},‘traingdx‘);%minmax求解矩阵每行的最小最大值
%设置训练参数
net.trainparam.show = 50 ;
net.trainparam.epochs = 500 ;
net.trainparam.goal = 0.01 ;
net.trainParam.lr = 0.01 ;
%开始训练
net=train(net,input,output‘);
%读取测试数据并归一化
[t1,t2,t3,t4,c]=textread(‘textdata.txt‘,‘%f%f%f%f%f‘,‘delimiter‘,‘,‘);
textinput=tramnmx([t1,t2,t3,t4]‘,mini,maxi);
%仿真
Y=sim(net,textinput);
%统计识别正确率
[s1,s2]=size(Y);
hitnum=0;
for i=1:s2
    [m,index]=max(Y(:,i));
    if(index==c(i));
        hitnum=hitnum+1;
    end
end
sprintf(‘识别率是 %3.3f%%‘,100 * hitnum / s2 )

隐层设计

对于隐层中神经元数目的确定并没有明确的公式, 只有一些经验公式, 神经元个数的最终确定还是需要根据经验和多次实验来确定。本文在选取隐层神经元个数的问题上参照了以下的经验公式:

其中, n为输入层神经元个数, m 为输出层神经元个数, a 为[ 1, 10]之间的常数。

时间: 2024-10-13 22:49:24

BP网络实例(Iris数据)的相关文章

如何使用R进行数据展现?且看使用iris数据可视化实例

iris数据的详细介绍如下: 首先,要查看iris数据集的大小和结构,其维度和名称分别使用函数dim 和names获取,函数str 和attributes返回数据的结构和属性. dim(iris) names(iris) str(iris) attributes(iris) 接下来,查看数据的前五行,返回第一和最后一行,使用head和tail iris[1:5,] head(iris) tail(iris) 还可以查找某一列的值: 例如,下面的两行代码可用来获取到Sepal.Length的前10

BP网络的代码分析

去年在学习Stanford的ML课程的时候整理过一篇BP神经网络原理的解析,链接地址,不过没有对它的code实现作太多的解读,只是用MATLAB的工具箱做了实验. Jeremy Lin 具体的原理性资料可以参考: [1] BP神经网络解析 http://blog.csdn.net/linj_m/article/details/9897839 [2] Tom M.Mitchell 机器学习教程  地址 BP网络算法流程: 从上面的算法流程可以看出来,BP神经网络的步骤并不多,如果你之前就了解BP神

(转载)Android之三种网络请求解析数据(最佳案例)

[置顶] Android之三种网络请求解析数据(最佳案例) 2016-07-25 18:02 4725人阅读 评论(0) 收藏 举报  分类: Gson.Gson解析(1)  版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 小武:相信大家都用过网络请求解析数据,只是方法不一样而已,但是,逻辑都是差不多的: 一:AsyncTask解析数据 AsyncTask主要用来更新UI线程,比较耗时的操作可以在AsyncTask中使用. AsyncTask是个抽象类,使用时需要继承这个

Neural Network based on Eorr Back Propagation典型BP网络c++实现

参考资料:人工神经网络-韩力群PPT 看了一些关于基于神经网络的语言模型, 与传统语言模型相比, 除了计算量让人有点不满意之外, 不需要额外的平滑算法, 感觉它们的效果让人惊讶. 这些网络里面都能看到BP的影子, 可以说BP网络是最基本的, 掌握扎实了, 对其他结构理解会更深刻, 于是早在学习语言模型之前我自己曾经用c++写过一个简单的BP网络,虽然功能简单,只有最基本的三层结构,但让自己对误差反传理解的更深刻.那个时候自己还没开始写博客, 现在把以前的代码放上来吧, 那个时候写代码没考虑任何优

python自然语言处理1——从网络抓取数据

python自然语言处理1--从网络抓取数据 写在前面 本节学习python2.7 BeautifulSoup库从网络抽取数据的技术,检验之简而言之就是爬虫技术.网络编程是一门复杂的技术,在需要基础的地方,文中给出的链接地址,都是很好的教程,可以参考,我在这里不在重复发明轮子.本节的主旨在于: 帮助快速掌握基本爬虫技术,形成一条主线,能为自己的实验构造基础数据.掌握爬虫技术后,可以从网络抓取符合特定需求的数据供分析,这里学习的爬虫技术适用于数据挖掘.自然语言处理等需要从外部挖掘数据的学科. 1.

BP网络

一. 网络结构 经典的BP网络,其具体结构如下: 请特别注意上面这个图的一些符号说明如下: 二.  学习算法 1. 信号的前向传递过程 请特别注意上述公式中的下标,这里,权值矩阵包含了神经元节点本身的偏置,所以权值矩阵多了一列.    2.   误差反向传导过程 三.  小结 信号的前向传递和误差反向传递过程都可以用递归公式描述.其实,就几个公式而已,把相关的几个重要公式再次总结如下: BP网络,布布扣,bubuko.com

关于BP网络的一些总结

背景 前段时间,用过一些模型如vgg,lexnet,用于做监督学习训练,顺带深入的学习了一下相关模型的结构&原理,对于它的反向传播算法记忆比较深刻, 就自己的理解来描述一下BP网络. 关于BP网络的整体简述 BP神经网络,全程为前馈神经网络,它被用到监督学习中的主体思想是(我们假定我们这里各个层Layer次间采用的是全链接): 通过各个Layer层的激励和权值以及偏置的处理向前传递,最终得到一个预期的值,然后通过标签值和预期的值得到一个残差值,残差值的大小反映了预期值和残差值的偏离程度,然后使用

网络加载数据及单例工具类的代码抽取

今天给大家分享一一下网络加载数据:先看代码吧-------------------------- - (void)diseaseNumWithFinishedBlock:(FinishedBlocks)finishedBlock{ NSString *urlStr = @"http://数据接口"; NSDictionary *prama = @{响应参数}; [[NetWorkTool sharedNetWorkTool] POST:urlStr parameters:prama p

ios学习(从网络上获取数据)

从网络上获取数据: 1.从网络上获取数据,采用如下这种方式会带来主线成阻塞现象,主线成主要是负责的是ui的交互(用户输入指令或数据,系统给一个反馈) 会进一步让ui停止交互 1)首先给我们将要下载的图片设置好位置 UIImage *image = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"地址"]]]; UIImageView *imageView = [[UIImageVie