【MATLAB数据处理实用案例详解(15)】——利用BP神经网络实现个人信贷信用评估

news2024/11/28 12:40:53

目录

    • 一、问题描述
    • 二、BP神经网络实现个人信贷信用评估原理
    • 三、算法步骤
      • 3.1 读入数据
      • 3.2 划分训练样本与测试样本
      • 3.3 样本归一化
      • 3.4 创建BP神经网络,并完成训练
      • 3.5 测试
    • 四、运行结果

一、问题描述

对个人信用的评估方法主要分为定性评估和定量评估两种,前者主要根据信贷人员的主观判断,后者则根据个人客户的资料,利用评分卡和信用评分模型等工具进行分析。
本文采用BP神经网络,以已知用户信息及信用情况为训练样本,学习得出一个抽象模型,然后对新样本进行评估 ,正确率稳定在70%以上。
对所有客户做二分类,只区分好和差两种情况。数据采用德国信用数据库。德国信用数据库由Hans Hofmann教授整理,包含1000份客户资料,每位客户包含20条属性,并给出了信用好或差的标注。
数据集下载地址如下:
http://ftp.ics.uci.edu/pub/machine-learning-databases/statlog/german。

原始数据保存在german.data文件中,包括:
经常账户状况 、账户持续时间 、贷款历史状况 、贷款用途 、贷款数额等。

二、BP神经网络实现个人信贷信用评估原理

数据集中每位客户包含20条属性,其中的数值属性可以直接使用,类别属性经过整数编码后可以使用。此外,该数据库还给出了另一个处理过的文件german.data-numeric,将原始文件的类别属性进行整数编码,形成24个数值属性,可以直接使用。本文主要使用原书数据进行评估,最后也给出结果。

使用MATLAB实现一个三层的BP神经网络。由于每个个人用户拥有24个属性,因此输入层包含24个神经元节点。该问题为针对信用好/差的二分类问题,因此输出层只包含一个神经元。隐含层的神经元个数与网络性能有关,需要通过实验确定。
流程如下:
在这里插入图片描述

三、算法步骤

3.1 读入数据

close all;
clear,clc

%% 读入数据
% 打开文件
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);

3.2 划分训练样本与测试样本

在全部1000份样本中,共有700份正例(信誉好),300份负例(信誉差)。划分时取前350份正例和前150份负例作为训练样本,后350份正例和后150份负例作为测试样本。

% 输入向量
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;

3.3 样本归一化

使用mapminmax函数对输入样本进行归一化:

% 训练样本归一化
[trainx, s1] = mapminmax(trainx);

% 测试样本归一化
testx = mapminmax('apply', testx, s1);

3.4 创建BP神经网络,并完成训练

代码如下:

% 创建BP网络
net = newff(trainx, trainy);
% 设置最大训练次数
net.trainParam.epochs = 1500;
% 目标误差
net.trainParam.goal = 1e-13;
% 显示级别
net.trainParam.show = 1;

% 训练
net = train(net,trainx, trainy);

3.5 测试

BP网络输出值并不限定为1或2,而是一个实数,因此还需要将输出转换为整数。取1.5为阈值,小于该阈值的输出判为1(信用好),否则判为2(信用差)

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));

四、运行结果

训练过程如下:
在这里插入图片描述
性能曲线:
在这里插入图片描述


如果需要源代码,可以参考资源:https://download.csdn.net/download/didi_ya/87734937。
制作不易,如果对你有所帮助,记得点个赞哟~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/470855.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Oracle中按天、周、月、季、年统计数据

简介: oracle实现按照天、周、月、季、年进行数据统计&#xff0c;在实际业务场景中如 "报表之类" 、"财务业务的往来" 等等&#xff0c;业务往往需要我们统计整年 或 整月的数据等&#xff0c;下面我们直入主题。 说明: 原始数据 一、按天查询 1、片段 …

我们为什么要叫“鲜枣课堂”?

大家好&#xff0c;我是小枣君。 再过几天&#xff0c;就是五月份了。5月19日&#xff0c;对我们来说&#xff0c;是一个重要的日子——“鲜枣课堂”品牌诞生六周年纪念日。 2017年5月19日&#xff0c;我正式确定了“鲜枣课堂”这个品牌命名&#xff0c;并开启了我的创业历程。…

ECF机制:信号处理

​​​​​​​ &#x1f4dc; 本章目录&#xff1a; 0x00 观察接收信号 0x01 阻塞和解除阻塞信号 0x02 安全的信号处理 0x03 在信号处理器中使用安全的 I/O 函数 0x04 便携式信号处理 0x05 显式信号等待 0x00 观察接收信号 假设内核从异常处理程序中返回&#xff0c;并…

多通道 JESD204B接口FMC子卡原理图: 8 通道 125MSPS16 位 AD 采集

板卡概述 FMC129 是一款 8 通道 125MHz 采样率 16 位 AD 采集 FMC子卡&#xff0c;符合 VITA57.1 规范&#xff0c;可以作为一个理想的 IO 模块耦合至 FPGA 前端&#xff0c;8 通道 AD 通过高带宽的 FMC 连接器&#xff08;HPC&#xff09;连接至 FPGA 从 而大大降低了系统信…

Mysql group by 查询报错 1055 this is incompatible with sql_mode=only_full_group_by

文章目录 一、问题二、原因三、解决办法 一、问题 mysql8 使用 group by 查询时报错&#xff1a; 1055 - Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column ‘dkia_quality_db.b.id’ which is not functionally dependent on colu…

OpenCV CascadeClassifier级联分类器 人脸检测

一、CascadeClassifier的简介 CascadeClassifier是opencv下objdetect模块中用来做目标检测的级联分类器的一个类&#xff1b;简而言之是滑动窗口机制级联分类器的方式&#xff1b;早期opencv版本仅支持haar特征的目标检测&#xff0c;分别在opencv2.2和2.4之后开始支持LBP和HO…

你知道如何使用C语言实现递归吗?

本篇博客会讲解如何使用C语言实现递归&#xff0c;以及2个注意事项。 递归是什么 递归&#xff0c;简单来说&#xff0c;就是自己调用自己。C语言中&#xff0c;可以使用函数来实现递归&#xff0c;也就是让一个函数自己调用自己。举一个简单的例子&#xff1a; 请你求斐波…

微服务---分布式事务Seata(XA,AT,TCC,SAGA模式基本使用)

分布式事务 1.分布式事务问题 1.1.本地事务 本地事务&#xff0c;也就是传统的单机事务。在传统数据库事务中&#xff0c;必须要满足四个原则&#xff1a; 1.2.分布式事务 分布式事务&#xff0c;就是指不是在单个服务或单个数据库架构下&#xff0c;产生的事务&#xff0c…

开发中不可轻视的接口文档

接口文档是描述如何与软件系统中的特定接口进行交互的文档&#xff0c;通常包含接口的名称、描述、请求和响应的格式、参数、返回值、错误码、调用示例等信息。它是开发人员在设计和开发软件系统时必不可少的参考资料。 日常工作中&#xff0c;运用接口文档最多的是前后端的同…

提高效率:使用这些工具,让你开发和学习更简单

&#x1f34e;道阻且长&#xff0c;行则将至。&#x1f353; 目录 零、ChatGPT一、代码1.代码备忘清单2.菜鸟教程3.代码转图片4.代码在线运行5.LaTeX 公式编辑器6.GitCode、GitHub 等代码仓库平台 二、绘图1.Canva 可画2.Echarts Js画图3.算法可视化4.函数绘图5.遇到 Alt 截不…

236:vue+openlayers输入经纬度坐标,校验并在地图上标记点,enter提交

第236个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+openlayers中输入坐标点,在地图上显示点图形。这里面校验了输入的经纬度坐标,同时使用了@keyup.enter.native来做提交处理。 直接复制下面的 vue+openlayers源代码,操作2分钟即可运行实现效果 文章目录 示例效果…

第七章SpingMVC

1.MVC模式 视图&#xff08;View&#xff09;-对应组件&#xff1a;JSP或者HTML文件 控制器&#xff08;Controller&#xff09;-对应组件&#xff1a;Servlet 模型&#xff08;Model&#xff09; -对应组件&#xff1a;JavaBean 2.MVC模式具体说明 JSP&#xff1a;负责生成动态…

python resnet实例,残差网络医学分类,基于resnet医学图像分类任务;医学图像处理实战

一&#xff0c;数据集介绍&#xff1a; 数据预处理&#xff1a; 把数据处理成相同大小&#xff1a; 数据集&#xff1a; PathMNIST:结直肠癌组织学切片&#xff1b;ChestMNIST&#xff1a;胸部CT数据集&#xff0c;来源于NIH-ChestXray14 dataset&#xff1b;DermaMNIST&#…

【刷题之路Ⅱ】LeetCode 138. 复制带随机指针的链表

【刷题之路Ⅱ】LeetCode 138. 复制带随机指针的链表 一、题目描述二、解题难点分析方法——插入拷贝节点2、将拷贝节点插入到原节点的后面3、复制原节点的random到拷贝节点中4、将拷贝节点尾插到新链表中并恢复原链表的结构 一、题目描述 原题连接&#xff1a; 138. 复制带随机…

考研拓展:汇编基础

一.说明 本篇博客是基于考研之计算机组成原理中的程序机器级代码表示进行学习的&#xff0c;并不是从汇编语言这一门单独的课程来学习的&#xff0c;涉及的汇编语言知识多是帮助你学习考研之计算机组成原理中对应的考点。 二.相关寄存器 1.相关寄存器 X86处理器中有8个32位…

【三十天精通Vue 3】第二十天 Vue 3的性能优化详解

✅创作者&#xff1a;陈书予 &#x1f389;个人主页&#xff1a;陈书予的个人主页 &#x1f341;陈书予的个人社区&#xff0c;欢迎你的加入: 陈书予的社区 &#x1f31f;专栏地址: 三十天精通 Vue 3 文章目录 引言一、Vue3 性能优化的概念1.1 为什么需要性能优化1.2 性能优化…

基于dsp+fpga+AD+ENDAC的半导体运动台高速数据采集电路仿真设计(四)

整个调试验证与仿真分析分三个步骤&#xff1a;第一步是进行 PCB 检查及电气特性测试&#xff0c;主 要用来验证硬件设计是否正常工作&#xff1b;第二步进行各子模块功能测试&#xff0c;包括高速光纤串行 通信的稳定性与可靠性测试&#xff0c; A/D 及 D/A 转换特性测…

26从零开始学Java之如何对数组进行排序与二分查找?

作者&#xff1a;孙玉昌&#xff0c;昵称【一一哥】&#xff0c;另外【壹壹哥】也是我哦 千锋教育高级教研员、CSDN博客专家、万粉博主、阿里云专家博主、掘金优质作者 前言 在上一篇文章中&#xff0c;壹哥给大家讲解了数组的扩容、缩容及拷贝方式。接下来在今天的文章中&…

深眸科技|深度学习、3D视觉融入机器视觉系统,实现生产数智化

随着“中国制造2025”战略加速落实&#xff0c;制造业生产线正在加紧向智能化、自动化和数字化转型之路迈进。而人工智能技术的兴起以及边缘算力持续提升的同时&#xff0c;机器视觉及其相关技术也在飞速发展&#xff0c;并不断渗透进工业领域&#xff0c;拓展应用场景的同时&a…

Apache Druid中Kafka配置远程代码执行漏洞(MPS-2023-6623)

漏洞描述 Apache Druid 是一个高性能的数据分析引擎。 Kafka Connect模块曾出现JNDI注入漏洞(CVE-2023-25194)&#xff0c;近期安全研究人员发现Apache Druid由于支持从 Kafka 加载数据的实现满足其利用条件&#xff0c;攻击者可通过修改 Kafka 连接配置属性进行 JNDI 注入攻…