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

题目:
企业到金融商业机构贷款,金融商业机构需要对企业进行评估。评估结果为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('值')
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值