本站原创文章,转载请说明来自《老饼讲解-BP神经网络》www.bbbdata.com
BP神经网络是一个强大的算法,本文展示一个BP神经网络解决二分类问题的例子
通过本文,可以具体掌握如何使用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