我是靠谱客的博主 迷路溪流,最近开发中收集的这篇文章主要介绍matlab bp神经网络三分类,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

笔者做了一个根据人的年龄判断人属于青少年、中年和老年人的一个bp神经网络分类。

%% 清空环境变量
clc
clear

%% 训练数据预测数据
data=xlsread('data.xlsx');

%从1到768间随机排序,产生随机数,防止过拟合
k=rand(1,40);%产生由在(0, 1)之间均匀分布的随机数组成的数组。
[m,n]=sort(k);%m是排序好的向量,n 是 向量m中对k的索引,这样就将随机数的排列顺序变成整数序号了,即随机抽取的样本


input=data(:,1);%输入数据
group=data(:,2);%标签

%随机提取30个样本为训练样本,从训练集和测试集随机选出10个样本为预测样本
input_train=input(n(1:30),:)';%训练样本,要转置
output_train=group(n(1:30),:)';%训练标签,要转置
input_test=input(n(31:40),:)';%测试样本,要转置
output_test=group(n(31:40),:)';%测试标签,要转置

%输入数据归一化
[inputn,inputps]=mapminmax(input_train);

%% BP网络训练
% %初始化网络结构
net=newff(inputn,output_train,10);

net.trainParam.epochs=1000;
net.trainParam.lr=0.1;
net.trainParam.goal=0.0000004;

%% 网络训练
net=train(net,inputn,output_train);

%% BP网络预测
%预测数据归一化
inputn_test=mapminmax('apply',input_test,inputps);
 
%网络预测输出
BPoutput=sim(net,inputn_test);%预测标签

%% 结果分析
%根据网络输出找出数据属于哪类
BPoutput(find(BPoutput<1.5))=1;
BPoutput(find(BPoutput>=1.5&BPoutput<2.5))=2;
BPoutput(find(BPoutput>=2.5))=3;
%% 结果分析
%画出预测种类和实际种类的分类图
figure(1)
plot(BPoutput,'og')
hold on
plot(output_test,'r*');
legend('预测类别','输出类别')
title('BP网络预测分类与实际类别比对','fontsize',12)
ylabel('类别标签','fontsize',12)
xlabel('样本数目','fontsize',12)
ylim([-0.5 3.5])


%预测正确率
rightnumber=0;
for i=1:size(output_test,2)
    if BPoutput(i)==output_test(i)
        rightnumber=rightnumber+1;
    end
end
rightratio=rightnumber/size(output_test,2)*100;

sprintf('测试准确率=%0.2f',rightratio)
数据如下:第一列为人的年龄,第二列为标签。

91 训练集
121  
231  
21  
41  
51  
271  
291  
141  
191 0-30为青少年
342  
372  
392  
422  
462  
472  
552  
582  
652  
432 31-65为中年
933  
663  
703  
693  
723  
773  
793  
893  
943  
1013 66以上为老年
21 测试集
1003  
602  
412  
231  
763  
813  
933  
562  
121  

注意:1  bp神经网络的是以列进行训练的,即列数为样本数,行数为特征数。所以数据在训练之前要进行转置。http://f.dataguru.cn/forum.php?mod=viewthread&action=printable&tid=542637  帖子也对这个问题进行了阐述

2  bp神经网络的训练函数名是train,所以输入的数据变量名不能写成train,以防两者冲突导致计算机无法辨别。可以写成train123.这样。

https://blog.csdn.net/weixin_42296976/article/details/81252809  帖子也对这个问题进行了阐述

3 bp神经网络训练函数newff等,及其参数参数调整,详解见:https://blog.csdn.net/ckzhb/article/details/60879570 

4 想查看bp神经网络性能图、迭代图和预测线性回归图,详见操作:https://blog.csdn.net/Q1302182594/article/details/8790613

最后

以上就是迷路溪流为你收集整理的matlab bp神经网络三分类的全部内容,希望文章能够帮你解决matlab bp神经网络三分类所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(36)

评论列表共有 0 条评论

立即
投稿
返回
顶部