BP神经网络对鸢尾花卉进行分类

BP神经网络对鸢尾花卉进行分类


摘要

Iris数据集是常用的分类实验数据集,由Fisher, 1936收集整理。Iris也称鸢尾花卉数据集,是一类多重变量分析的数据集。数据集包含150个数据集,分为3类,每类50个数据,每个数据包含4个属性。可通过花萼长度,花萼宽度,花瓣长度,花瓣宽度4个属性预测鸢尾花卉属于(Setosa,Versicolour,Virginica)三个种类中的哪一类。

iris以鸢尾花的特征作为数据来源,常用在分类操作中。该数据集由3种不同类型的鸢尾花的50个样本数据构成。其中的一个种类与另外两个种类是线性可分离的,后两个种类是非线性可分离的。
该数据集包含了5个属性:

  • Sepal.Length(花萼长度),单位是cm;

  • Sepal.Width(花萼宽度),单位是cm;

  • Petal.Length(花瓣长度),单位是cm;

  • Petal.Width(花瓣宽度),单位是cm;

种类:

  • Iris Setosa(山鸢尾)(本例中使用数字‘1’表示)
  • Iris Versicolour(杂色鸢尾)(本例中使用数字‘2’表示)
  • Iris Virginica(维吉尼亚鸢尾)(本例中使用数字‘3’表示)

Matlab_Code

    %正向反馈神经网络
    %%关于新版归一化用法:
    %  1.   [Y,PS] = mapminmax(X)           %对矩阵进行归一化
    %  2.   Y = mapminmax('apply',X,PS)     %利用这个对应关系PS对其他数值进行归一化,这个数必须要在xmin 和xmax之间
    %  3.   X = mapminmax('reverse',Y,PS)     %反归一化
    %-------------------------------------------------------------------------%
    %训练集合
    clc;
    clear all;
    a = textread('train1.txt');
    b = textread('test1.txt');
    x = a;   
    x(:,5) = [];
    x = x'      %训练矩阵
    [y,PS] = mapminmax(x);      %归一化处理       
    t = a(:,5);
    t = t';     %目标矩阵
    %-------------------------------------------------------------------------%
    %神经网络
    net = feedforwardnet(3);      %创建一个两层前馈网络。该网络有一个隐含层有10个神经元,目前设置为3。
    % net = cascadeforwardnet(8); %级联正向网络,不过好像没有feedforwardnet好用    
    net = configure(net,y,t);   %配置内存
    % %对网络进行训练
    % net.trainParam.epochs = 1000;%执行步长为1000
    net = train(net,y,t);  
    %-------------------------------------------------------------------------%
    %显示相关参数
    y2 = net(y)                 %训练成果展示
    disp('网络训练后的第一层权值为:')
    iw1=net.iw{1}
    disp('网络训练后的第一层阈值:')
    b1=net.b{1}
    disp('网络训练后的第二层权值为:')
    iw2=net.Lw{2}
    disp('网络训练后的第二层阈值:')
    b2=net.b{2}
    %-------------------------------------------------------------------------%
    %测试集合
    m = b;
    m(:,5) = [];    %测试矩阵
    m = m';
    an = b(:,5);
    an = an';       %答案集
    n = mapminmax('apply',m,PS);%同一归一化,关于这个“同一归一化”随便取的
    G = net(n)      %测试结果输出
    er =(1 - sum(sqrt((an-G).^2)./an)/length(an))*100;  %计算匹配度
    fprintf('匹配度为:%f%%\n',er);

数据下载地址

http://archive.ics.uci.edu/ml/datasets/Iris;

猜你喜欢

转载自blog.csdn.net/q_quanting/article/details/79439362