% credit_class.m
% 信贷信用的评估
% 数据取自德国信用数据库
%% 清理工作空间
clear,clc
% 关闭图形窗口
% close all
%% 读入数据
% 打开文件
fid = fopen('german.data', 'r');
% 按格式读取每一行
% 每行包括21项,包括字符串和数字
C = textscan(fid, '%s %d %s %s %d %s %s %d %s %s %d %s %d %s %s %d %s %d %s %s %d\n');
% 关闭文件
fclose(fid);
% 将字符串转换为整数
N = 20;
% 存放整数编码后的数值矩阵
C1=zeros(N+1,1000);
for i=1:N+1
% 类别属性
if iscell(C{i})
for j=1:1000
% eg: 'A12' -> 2
if i<10
d = textscan(C{i}{j}, '%c%c%d');
% eg: 'A103' -> 3
else
d = textscan(C{i}{j}, '%c%c%c%d');
end
C1(i,j) = d{end};
end
% 数值属性
else
C1(i,:) = C{i};
end
end
%% 划分训练样本与测试样本
% 输入向量
x = C1(1:N, :);
% 目标输出
y = C1(N+1, :);
% 正例
posx = x(:,y==1);
% 负例
negx = x(:,y==2);
% 训练样本
trainx = [ posx(:,1:350), negx(:,1:150)];
trainy = [ones(1,350), ones(1,150)*2];
% 测试样本
testx = [ posx(:,351:700), negx(:,151:300)];
testy = trainy;
%% 样本归一化
% 训练样本归一化
[trainx, s1] = mapminmax(trainx);
% 测试样本归一化
testx = mapminmax('apply', testx, s1);
%% 创建网络,训练
% 创建BP网络
net = newff(trainx, trainy);
% 设置最大训练次数
net.trainParam.epochs = 1500;
% 目标误差
net.trainParam.goal = 1e-13;
% 显示级别
net.trainParam.show = 1;
% 训练
net = train(net,trainx, trainy);
%% 测试
y0 = net(testx);
% y0为浮点数输出。将y0量化为1或2。
y00 = y0;
% 以1.5为临界点,小于1.5为1,大于1.5为2
y00(y00<1.5)=1;
y00(y00>1.5)=2;
% 显示正确率
fprintf('正确率: \n');
disp(sum(y00==testy)/length(y00));
%% 训练.测试
M = 20;
rat = zeros(1, M);
trr = rat;
for i=1 : M
% 创建网络,训练
net = newff(trainx, trainy);
% 设置最大训练次数
net.trainParam.epochs = 1500;
% 目标误差
net.trainParam.goal = 1e-13;
% 显示级别
net.trainParam.show=1;
% 训练
[net tr] = train(net, trainx, trainy);
% 测试
y0 = net(testx);
% y0为浮点数,将y0量化为1或2
y00 = y0;
y00(y00<1.5) =1;
y00(y00>1.5) =2;
rat(i) = sum(y00==testy)/length(y00);
trr(i) = length(tr.epoch);
end
% 显示正确率
fprintf('正确率:\n');
disp(rat);
fprintf('平均正确率:\n');
disp(mean(rat));
fprintf('最低正确率:\n');
disp(min(rat));
% 显示训练次数
fprintf('迭代次数:\n');
disp(trr);
% 绘制双坐标图
[AX, H1, H2] = plotyy(1:M, rat, 1:M, trr, 'plot', 'plot');
% 设置y轴的范围
set(AX(1), 'YLim', [0.70, 0.80]);
set(AX(2), 'YLim', [0, 5]);
% 设置线型
set(H1, 'LineStyle', '--')
set(H2, 'LineStyle', ':')
% 设置Y轴标签
set(get(AX(1), 'Ylabel'), 'String', '正确率')
set(get(AX(2), 'Ylabel'), 'String', '训练次数')
title('BP网络的正确率与训练次数')
没有合适的资源?快使用搜索试试~ 我知道了~
基于BP神经网络的个人信贷信用评估matlab代码.zip
共4个文件
data-numeric:1个
png:1个
m:1个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 152 浏览量
2022-10-12
12:07:55
上传
评论
收藏 29KB ZIP 举报
温馨提示
1.版本:matlab2019a,不会运行可私信 2.领域:【回归预测-BP预测】 3.内容:基于BP神经网络的个人信贷信用评估matlab代码.zip 4.适合人群:本科,硕士等教研学习使用
资源推荐
资源详情
资源评论
收起资源包目录
【回归预测-BP预测】基于BP神经网络的个人信贷信用评估matlab代码 上传.zip (4个子文件)
german.data-numeric 100KB
german.data 78KB
基于BP网络的个人信贷信用评估
2.png 5KB
credit_class.m 3KB
共 4 条
- 1
资源评论
天天Matlab科研工作室
- 粉丝: 4w+
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功