神经网络-专题教程

【示例】BP神经网络二分类-螃蟹识别例子

作者 : 老饼 发表日期 : 2023-06-01 20:38:54 更新日期 : 2024-11-10 23:20:17
本站原创文章,转载请说明来自《老饼讲解-BP神经网络》www.bbbdata.com



BP神经网络是一个强大的算法,本文展示一个BP神经网络解决二分类问题的例子

通过本文,可以具体掌握如何使用BP神经网络的解决二分类问题




    01. 螃蟹类别识别问题介绍    




本节介绍螃蟹识别的问题与数据说明




      螃蟹类别识别问题介绍      


螃蟹类别数据如下:
  
螃蟹类别的输入变量共六个,分别是种类、额唇、后宽度、长度、宽度、深度,
输出为雌、雄两种类别
现需要用采集到的关于螃蟹的六个输入变量来识别螃蟹的性别






    02. BP神经网络应用于螃蟹识别(二分类)    




本节展示如何使用BP神经网络实现螃蟹识别




      BP神经网络应用于螃蟹识别-代码实现      


在matlab中使用patternnet函数就可以构建一个用于模式识别的BP神经网络
 具体代码实现如下:
%  本代码用于展示BP神经网络应用于螃蟹识别(二分类模型)
%  转载请说明来自 《老饼讲解神经网络》 www.bbbdata.com
% --------------数据加载------------
load crab_dataset                        % 加载螃蟹数据
x = crabInputs;                          % 将螃蟹特征作为x
y = crabTargets;                         % 将螃蟹性别作为y

% --------------模型训练-------------
setdemorandstream(491218382);            % 指定随机种子,这样每次训练出来的网络都一样
net = patternnet(10);                    % 建立模式识别网络,隐层设为10个
[net,tr] = train(net,x,y);               % 将数据放到网络中训练
plotperform(tr)                          % 画出训练记录

% --------------模型预测-----------
test_x  = x(:,tr.testInd);               % 获取测试数据的x
test_y  = y(:,tr.testInd);               % 获取测试数据的y
test_py = net(test_x);                   % 用模型进行预测

% ----------------打印结果------------
% 画出混淆矩阵,并计算准确率
plotconfusion(test_y,test_py)            % 画出混淆矩阵
[c,cm] = confusion(test_y,test_py);      % 计算混淆矩阵,c是错误率,cm是混淆矩阵
fprintf('准确率: %f%%\n', 100*(1-c));    % 打印准确率
figure
plotroc(test_y,test_py)                  % 绘制ROC曲线,ROC是用于评估二分类模型的曲线

% 也可以自行计算准确率 
t_label = vec2ind(test_y);               % 将真实结果转换为标签
p_label = vec2ind(test_py);              % 将预测结果转换为标签
acc_rate = mean(t_label==p_label)        % 计算准确率
运行结果如下:
1. 准确率: 100.000000%                                 
2. 模型预测结果的混淆矩阵如下:                   
  
3. 模型预测结果的ROC曲线如下:  
 











  End  










联系老饼