博客
关于我
matlab 神经网络ann用于分类方法
阅读量:141 次
发布时间:2019-02-28

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

MATLAB ANN分类方法:以鸢尾花数据集为例

Iris数据集简介

Iris数据集是机器学习领域的经典数据集,包含150个样本,用于花的分类任务。每个样本由4个特征(花萼长度、花萼宽度、花瓣长度、花瓣宽度)和一个类别标签(1-Setosa、2-Versicolour、3-Virginica)组成。数据集以5列的形式存储,前4列为特征值,第5列为类别标签。

数据预处理

在监督学习任务中,需要将数据集划分为训练集和测试集。通常,iris数据集将近一半的数据(如前50个样本)作为训练集,剩余数据作为测试集。为了保证模型的泛化能力,训练集和测试集的划分应尽量遵循类别分布。需要注意的是,在实际应用中,数据预处理步骤可能会因任务需求而有所不同。

分类模型构建

神经网络结构设计

  • 特征归一化

    对输入特征值进行归一化处理,使用minmax函数获取输入信号的最大值和最小值,确保神经网络收敛。

  • 神经网络创建

    使用newff函数创建一个两层的神经网络,网络结构为:

    • 输入层(4个神经元)→ 激活函数logsig
    • 隐层(10个神经元)→ 激活函数purelin
    • 输出层(3个神经元)→ 激活函数purelin
      选择traingdx作为训练函数,支持自适应学习率。
  • 训练参数设置

    • 学习率(Learning rate):0.01
    • 目标误差(goal):0.01
    • 迭代次数(epochs):500
    • 显示中间结果的周期:50
  • 网络训练

    使用train函数对网络进行训练,训练目标是输出与实际标签一致。

  • 测试阶段

  • 测试数据归一化

    对测试集的特征值进行归一化处理,与训练集保持一致。

  • 网络仿真

    使用sim函数对训练后的网络进行仿真,获取对测试集的分类结果。

  • 准确率计算

    通过比较预测结果与真实标签,计算分类准确率。逻辑如下:

    • 初始化计数器hitNum为0。
    • 遍历所有测试样本,找到最大值对应的索引。
    • 累加正确分类的情况。
    • 最后计算并输出准确率。
  • 代码解释

    神经网络创建

    % 读取训练数据
    clear clc
    % 创建神经网络
    net = newff(minmax(input), [10 3], {'logsig' 'purelin'}, 'traingdx');
    • minmax(input):获取输入信号的最大值和最小值。
    • [10 3]:网络层数和节点数,前一层为10个神经元,输出层为3个神经元。
    • { 'logsig' 'purelin' }:激活函数配置,第一层为logsig,第二层为purelin
    • 'traingdx':使用自适应学习率的梯度下降训练函数。

    网络训练

    % 设置训练参数
    net.trainparam.show = 50;
    net.trainparam.epochs = 500;
    net.trainparam.goal = 0.01;
    net.trainParam.lr = 0.01;
    % 开始训练
    [net, input, output] = train(net, input, output');
    • net.trainparam.show:设置训练显示周期。
    • net.trainparam.epochs:设置最大迭代次数。
    • net.trainparam.goal:设置训练目标误差。
    • net.trainParam.lr:设置学习速率。

    测试仿真

    % 读取测试数据
    [t1 t2 t3 t4 c] = textread('testData.txt', '%f%f%f%f%f', 150);
    % 测试数据归一化
    testInput = minmax([t1 t2 t3 t4]');
    % 仿真测试
    Y = sim(net, testInput);
    % 统计准确率
    [s1, s2] = size(Y);
    hitNum = 0;
    for i = 1:s2
    [m, Index] = max(Y(:, i));
    if Index == c(i)
    hitNum = hitNum + 1;
    end
    end
    printf('识别率是 %3.3f%%', 100 * hitNum / s2);
    • testInput = minmax([t1 t2 t3 t4']):对测试数据进行归一化处理。
    • Y = sim(net, testInput):对训练好的网络进行仿真,获取预测结果。
    • hitNum:统计正确分类的数量。
    • 最后打印识别准确率。

    总结

    通过以上方法,我们可以使用ANN算法对鸢尾花数据集进行分类。MATLAB的神经网络工具箱提供了便捷的接口,使得构建和训练分类模型变得简单。无论是训练集还是测试集,都需要经过数据预处理,确保模型的泛化能力。通过调整网络结构和训练参数,可以进一步提升分类准确率。这种方法不仅适用于鸢尾花分类,还可以广泛应用于其他分类任务。

    转载地址:http://iebc.baihongyu.com/

    你可能感兴趣的文章
    Objective-C实现FFT算法(附完整源码)
    查看>>
    Objective-C实现fibonacci search斐波那契查找算法(附完整源码)
    查看>>
    Objective-C实现fibonacci斐波那契算法(附完整源码)
    查看>>
    Objective-C实现FigurateNumber垛积数算法(附完整源码)
    查看>>
    Objective-C实现finding bridges寻找桥梁算法(附完整源码)
    查看>>
    Objective-C实现first come first served先到先得算法(附完整源码)
    查看>>
    Objective-C实现Gale-Shapley盖尔-沙普利算法(附完整源码)
    查看>>
    Objective-C实现getline函数功能(附完整源码)
    查看>>
    Objective-C实现gnome sortt侏儒排序算法(附完整源码)
    查看>>
    Objective-C实现greatest common divisor最大公约数算法(附完整源码)
    查看>>
    Objective-C实现greedy coin change贪心硬币找零算法(附完整源码)
    查看>>
    Objective-C实现half adder半加器算法(附完整源码)
    查看>>
    Objective-C实现hamiltonianCycle哈密尔顿图算法(附完整源码)
    查看>>
    Objective-C实现hamming code汉明码算法(附完整源码)
    查看>>
    Objective-C实现hamming numbers汉明数算法(附完整源码)
    查看>>
    Objective-C实现hammingDistance汉明距离算法(附完整源码)
    查看>>
    Objective-C实现hanning 窗(附完整源码)
    查看>>
    Objective-C实现hanoiTower汉诺塔算法(附完整源码)
    查看>>
    Objective-C实现hardy ramanujana定理算法(附完整源码)
    查看>>
    Objective-C实现harmonic series调和级数算法(附完整源码)
    查看>>