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

题目:
企业到金融商业机构贷款,金融商业机构需要对企业进行评估。评估结果为0和1两种形式,0表示企业两年后破产,将拒绝贷款;而1表示企业2年后具备还款能力,可以贷款。表5-9中,已知前20家企业的三项评价指标值和评估结果,试建立神经网络,决策树模型对剩余5家企业进行评估。
BP神经网络实现简单数据二分类实战(matlab实现)_第1张图片
(数据下载,无需积分)

解题过程:

  1. 建立双层前向神经网络模型:
    BP神经网络实现简单数据二分类实战(matlab实现)_第2张图片
    BP神经网络实现简单数据二分类实战(matlab实现)_第3张图片

  2. 编写matlab代码,构造一个输入结点为2,中间隐藏层结点为5,输出结点为1的BP神经网络。其训练次数设置为200,训练目标最小误差设置为0.00001。用训练样本对BP神经网络进行训练。训练效果如下:
    BP神经网络实现简单数据二分类实战(matlab实现)_第4张图片
    检验样本的预测值(红线)和期望值(蓝线)如下所示:
    BP神经网络实现简单数据二分类实战(matlab实现)_第5张图片

  3. 将题目中未分类的五组数据作为预测集输入到我们构建的BP神经网络中,得到预测结果如下:
    BP神经网络实现简单数据二分类实战(matlab实现)_第6张图片
    因此,利用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('值')

你可能感兴趣的:(数学建模算法与应用,神经网络,数学建模,机器学习,matlab)