BP神经网络实现简单数据二分类实战(matlab实现)

  • Post author:
  • Post category:其他



题目:


企业到金融商业机构贷款,金融商业机构需要对企业进行评估。评估结果为0和1两种形式,0表示企业两年后破产,将拒绝贷款;而1表示企业2年后具备还款能力,可以贷款。表5-9中,已知前20家企业的三项评价指标值和评估结果,试建立神经网络,决策树模型对剩余5家企业进行评估。

在这里插入图片描述

(

数据下载


,无需积分

)


解题过程:

  1. 建立双层前向神经网络模型:

    在这里插入图片描述

  2. 编写matlab代码,构造一个输入结点为2,中间隐藏层结点为5,输出结点为1的BP神经网络。其训练次数设置为200,训练目标最小误差设置为0.00001。用训练样本对BP神经网络进行训练。训练效果如下:

    在这里插入图片描述

    检验样本的预测值(红线)和期望值(蓝线)如下所示:

    在这里插入图片描述

  3. 将题目中未分类的五组数据作为预测集输入到我们构建的BP神经网络中,得到预测结果如下:

    在这里插入图片描述

    因此,利用BP神经网络我们预测出以下结论:编号为21、22的企业银行将拒绝贷款,编号为23,24,25的企业银行可以贷款。

代码如下:

%% 清空环境变量
clear 
clc
%% 读取数据
data = xlsread('data2');  
input = data(1:25,2:4)';%载入输入数据
output = data(1:20,5)'; %载入输出数据
x = input(:,1:20);
[xn,xps]=mapminmax(x);%归一化到[-1,1]之间
y = zeros(2,20);
for i=1:20
    if output(1,i)==1
        y(1,i)=1;
        y(2,i)=0;
    else
        y(1,i)=0;
        y(2,i)=1;
    end
end
%% 建立两层前向神经网络
net=newff(xn,y,5,{'tansig','purelin'},'trainlm'); 
net.trainParam.goal=0.000001; %设定训练误差
net.trainParam.epochs=200;  %设定最大训练步数
net=train(net,x,y); %训练网络
y1=sim(net,x); %输出数据
%yy=sim(net,[1.24 1.28 1.40;1.80 1.84 2.04]-1) 
%% 数据泛化
input_predict = input(:,21:25);
[input_predictn,input_predictps]=mapminmax(input_predict);%归一化到[-1,1]之间
result_predict = sim(net,input_predictn);
result_predict = round(result_predict);
%% 作图
figure(1)
yy = y(1,:);
y11 = y1(1,:);
plot(yy,'bo-')
hold on
plot(y11,'r*-')
% hold on
% plot(error,'square','MarkerFaceColor','b')
legend('期望值','预测值')
xlabel('数据组数')
ylabel('值')



版权声明:本文为YJY131248原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。