Matlab期末课程设计《基于BP网络的个人信贷信用评估》_matlab期末设计课题-程序员宅基地

技术标签: matlab  开发语言  

1.目的和意义

  对客户行为模式的分析,对于每一个行业都至关重要。客户信用的评估基于对客户的认知,将客户划分为不同的类别,对应不同的需求,市场规模和重要程度。由此,可以指定差异化的服务策略,从而压缩成本,降低风险,实现利益最大化。

2.算法设计

流程图

在这里插入图片描述

算法理论介绍

(1)读入数据,由于数据保存在二进制文件german.data中,需要使用MATLAB的fid = fopen(‘german.data’, ‘r’);打开文件,再使用MATLAB的读入函数textscan,其中fid作为打开的文件句柄。调用方法如下:

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

  为了便于计算,必须使用数值来表示数据中的类别属性。最简单的方式就是使用整数进行编码,如第一个属性的类别字符串为“A12”,“A1”表示该属性为第一个属性,“2”表示属性值为第二个类别。因此,采用数字“2”编码字符串“A12”,具体实现如下:

% 将字符串转换为整数
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

(2)划分训练样本和测试样本

%% 划分训练样本与测试样本
 
% 输入向量
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)样本归一化,使用maominmax函数对输入样本进行归一化

% 训练样本归一化
[trainx, s1] = mapminmax(trainx);
 
% 测试样本归一化
testx = mapminmax('apply', testx, s1);

(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);5)测试
y0 = net(testx);
 
% y0为浮点数输出。将y0量化为12。
y00 = y0;
%1.5为临界点,小于1.51,大于1.52
y00(y00<1.5)=1;
y00(y00>1.5)=2;
 
% 显示正确率
fprintf('正确率: \n');
disp(sum(y00==testy)/length(y00));
web -broswer http://www.ilovematlab.cn/forum-222-1.html

3.实验验证

由图可知,结果的正确率为:0.7520,此时较为理想
在这里插入图片描述

同时打开一个网站
在这里插入图片描述

4.实验总结

  随着金融行业的迅猛发展,银行等部门逐渐积累了大量的客户数据,如何根据积累的数据跟踪个人客户的信用记录。如何根据累积的数据跟踪个人客户的信用记录并利用已有客户的数据,分析、判断新客户的信用状况,成为迫切需要解决的问题。个人信用评估对促进消费有极大的帮助。
  通过此次学习,我学到了很多知识,我明白了我要熟练掌握专业知识,做到学以致用,实现学习的价值。同时我也知道了学习的时候要多加练习,才能更牢固的掌握。

5.实验源码

% 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量化为12。
y00 = y0;
%1.5为临界点,小于1.51,大于1.52
y00(y00<1.5)=1;
y00(y00>1.5)=2;

% 显示正确率
fprintf('正确率: \n');
disp(sum(y00==testy)/length(y00));
web -broswer http://www.ilovematlab.cn/forum-222-1.html

6.数据集

数据文件

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/m0_52900946/article/details/125040835

智能推荐

解决方案:秒杀整体设计-程序员宅基地

文章浏览阅读196次,点赞2次,收藏2次。解决方案:秒杀整体设计秒杀技术实现核心思想是:运用缓存减少数据库瞬间的访问压力读取商品详细信息:运用缓存,当用户点击抢购时减少缓存中的库存数量,当库存数为0时或活动期结束时,同步到数据库产生的秒杀预订单:也不会立刻写到数据库中,而是先写到缓存,当用户付款成功后再写入数据库1. 秒杀商品压入Redis缓存秒杀由B端存入MYSQL,设置定时任务,每隔一段时间就从MYSQL中将符合条件的数据从MYSQL中查询出来并存入缓存中,redis以Hash类型进行数据存储(namespace=时间,key=商

作品展示1——仿QQ即时通讯软件_visual studio模仿 qq 完成一套即时通信软件。-程序员宅基地

文章浏览阅读1.6k次。仿QQ即时通讯软件前要说明: 编程环境:Window7/WinXP、Visual C++6.0 软件分客户端、服务器、数据库三块。其中,服务器和数据库整合在单机上了。====================================================客户端登录界面:=======================================================客户端主界面:(最大化与正常窗体)===================_visual studio模仿 qq 完成一套即时通信软件。

can't return outside function or method解决方法_return outside method-程序员宅基地

文章浏览阅读4.5k次。今天写web项目作业时,发现jsp中“Cannot return from outside a function or method” 提示return出错,百度了一下,网上说这是myeclipse的一个bug,去掉return就好了,去掉之后果然不报错,但是之后发现onSubmit()不能阻止表单提交,再百度之,原来这个return还真不能去掉。以下就是今天错误的解决方法 1_return outside method

python爬取研究生招生网招生信息_考研信息api-程序员宅基地

文章浏览阅读7.2k次,点赞3次,收藏64次。import requestsfrom bs4 import BeautifulSoupfrom pandas.core.frame import DataFrameimport reimport timeclass Graduate: def __init__(self, province, category): self.head = { ..._考研信息api

web结课作业的源码 WEB静态网页作业模板 大学生个人主页博客网页代码 dw个人网页作业成品简单页面-程序员宅基地

文章浏览阅读330次,点赞8次,收藏10次。HTML实例网页代码, 本实例适合于初学HTML的同学。该实例里面有设置了css的样式设置,有div的样式格局,这个实例比较全面,有助于同学的学习,本文将介绍如何通过从头开始设计个人网站并将其转换为代码的过程来实践设计。 精彩专栏推荐 【作者主页——获取更多优质源码】 【学习资料/简历模板/面试资料/ 网站设计与制作】 【web前端期末大作业——毕设项目精品实战案例】---@[TOC](文章目录)一、网页介绍1 网页简介:此作品为学生个人主

ICML2019|深度学习鼻祖之一Bengio提出并开源图马尔科夫神经网络-程序员宅基地

文章浏览阅读724次。Meng Qu,Yoshua Bengio,Jian TangMontreal Institute for Learning Algorithms (MILA), Uni..._马尔可夫 图神经网络

随便推点

android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity_android android.util.androidruntimeexception: call-程序员宅基地

文章浏览阅读741次。android.util.AndroidRuntimeException: Calling startActivity() from outside of an ActivityCaused by: android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity contex_android android.util.androidruntimeexception: calling startactivity() from o

集群资源调度系统设计架构总结_任务调度集群资源怎么写-程序员宅基地

文章浏览阅读5.9k次,点赞3次,收藏17次。集群资源调度系统设计架构总结之前为完成《AWS 下 Kylin 调度系统的设计》(https://io-meter.com/2017/10/13/kylin-aws-scheduler-system/),阅读了大量 集群资源管理和任务调度的资料和论文。了解了如Hadoop YARN、Mesos、Spark Drizzle、Borg/Kubernetes 和O mega等系统的调度器_任务调度集群资源怎么写

B-tree/B+tree/B*tree-程序员宅基地

文章浏览阅读528次。B~树 1.前言:动态查找树主要有:二叉查找树(Binary Search Tree),平衡二叉查找树(Balanced Binary Search Tree),红黑树 (Red-Black Tree ),B-tree/B+-tree/ B*-tree (B~Tree)。前三者是典型的二叉查找树结构,其查找的时间复杂度O(log2N)与树的深度相关,那么

一个文科生从零到进入大厂的感悟(3小时掌握一门编程语言)_文科生进在华为云工作需要学编程代码-程序员宅基地

文章浏览阅读527次。你学编程的方法对吗?你是否手写代码?你是否死记硬背?你是否把学文科的方法应用到编程上?你是否前面学后面忘?你是否在抱怨编程难学?如果你遇到上面这些问题,很遗憾的告诉你,你学习的方法错了。这些问题我都遇到过,我一开始学编程的时候,感觉可难了,当时就是照着别人的视频和教程一点点的学,一点点的敲代码,记忆,可是几个月过去了又忘光了,不断重复这种死循环。直到有一天,我认识了一位前辈,我发现,我错了,编程不是这么学的。1.不要看视频学习那编程应该怎么学呢?首先我不建议你去看视频学习,因为这种学_文科生进在华为云工作需要学编程代码

Echarts基础-安装语法高亮插件&less-rem转换动态适配大小_echarts无法rem转换-程序员宅基地

文章浏览阅读1k次,点赞33次,收藏13次。Echarts是一个功能强大的JavaScript开源可视化库,专门用于创建各种图表和数据可视化。丰富的图表类型:Echarts提供了包括折线图、柱状图、散点图、饼图、雷达图、地图等多种常见的图表类型,满足不同的数据展示需求。兼容性良好:它可以流畅运行在PC和移动设备上,并且兼容多种浏览器,如IE8/9/10/11,Chrome,Firefox,Safari等。底层依赖ZRender:Echarts底层依赖于矢量图形库ZRender,这使得其能够提供直观且交互性强的数据可视化效果。_echarts无法rem转换

Spring框架以及源码学习_spring框架源码-程序员宅基地

文章浏览阅读769次。一、Spring注解驱动开发1.容器—组件注册-@Configuration&@Bean给容器中注册组件—组件注册-@ComponentScan-自动扫描组件&指定扫描规则—组件注册-自定义TypeFilter指定过滤规则—组件注册-@Scope-设置组件作用域—组件注册-@Lazy-bean懒加载—组件注册-@Conditional-按照条件注册bean...................._spring框架源码

推荐文章

热门文章

相关标签