BP神经网络多分类器MATLAB代码

 

现学现卖,csdn论坛有许多3分类器的MATLAB代码,4分类器MATLAB代码比较少

BP神经网络多4分类器代码如下,欢迎访问:

4分类器MATLAB代码:

clear
clc
load shuju1.mat;%读取原始数据,此时原始数据的行为样品
load shuju1_labeltr;%读取原始数据对应的标签,因为是4分类问题,所以[1 0 0 0]是第一类,[0 0 0 1]是第四类
%由于神经网络要求输入输出的列为样品,所以需要转置一下
input = shuju1';
output = shuju1_labeltr';
net = newff(minmax(input),[25 4],{'logsig' 'logsig'},'traingdx');%隐含层25是根据样品的属性设置的,4对应4个类别
%理论上讲,隐含层设置越多,就可以达到收敛
%设置参数,不多哔哔
net.trainparam.show = 1;
net.trainParam.min_grad=1e-25;
net.trainparam.epochs=10000;
net.trainparam.goal=0.0000001;
net.trainParam.lr=0.01;
%训练网络
net=train(net,input,output);
%计算识别率
testinput = input;%测试集选的是原始数据
testoutput=sim(net,testinput);
[l1,l2] = size(testoutput') ;
right_number = 0 ;
for i = 1 : l2
    [c,Index]= max(testoutput(:,i));%找出仿真结果中最大值所在位置,即所属类别
    [c1,Index1]=max(output(:,i));%找出原始数据标签中最大值(1)所在位置
    if  Index ==Index1 
        right_number = right_number + 1 ;
    end
end
sprintf('识别率是 %3.3f%%',100 * right_number / l2 )

运行结果:

P分类器代码:

clear
clc
load shuju1.mat;%读取原始数据,此时原始数据的行为样品
load shuju1_labeltr;%读取原始数据对应的标签,因为是p分类问题,所以[1 0 0 0 ...]是第一类,[... 0 0 0 1]是第m类
[~,p]=size(shuju1_labeltr);%p分类问题
[m,n]=size(shuju1);%m为样品数,n为每个样品的属性
%由于神经网络要求输入输出的列为样品,所以需要转置一下
input = shuju1';
output = shuju1_labeltr';
net = newff(minmax(input),[2*m+1 p],{'logsig' 'logsig'},'traingdx');%隐含层2*m+1是根据样品的属性设置的,p对应p个类别
%理论上讲,隐含层设置越多,就可以达到收敛
%设置参数,不多哔哔
net.trainparam.show = 1;
net.trainParam.min_grad=1e-25;
net.trainparam.epochs=10000;
net.trainparam.goal=0.0000001;
net.trainParam.lr=0.01;
%训练网络
net=train(net,input,output);
%计算识别率
testinput = input;%测试集选的是原始数据
testoutput=sim(net,testinput);
[l1,l2] = size(testoutput') ;
right_number = 0 ;
for i = 1 : l2
    [c,Index]= max(testoutput(:,i));%找出仿真结果中最大值所在位置,即所属类别
    [c1,Index1]=max(output(:,i));%找出原始数据标签中最大值(1)所在位置
    if  Index ==Index1 
        right_number = right_number + 1 ;
    end
end
sprintf('识别率是 %3.3f%%',100 * right_number / l2 )

进行完上述步骤之后(训练网络),就可以用于分类啦:

cinput=[3.92	0.19	0.35	1.74	0.55];%本例中,每个样品有5个属性
s = sim(net,cinput');

 输出:

  • 6
    点赞
  • 82
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值