人工智能|机器学习——基于机器学习的信用卡办卡意愿模型预测项目

一、背景介绍

在金融领域,了解客户的信用卡办卡意愿对于银行和金融机构至关重要。借助机器学习技术,我们可以根据客户的历史数据和行为模式预测其是否有办理信用卡的倾向。本项目通过Python中的机器学习库,构建了两个常用的分类模型:随机森林和逻辑回归,来预测客户的信用卡办卡意愿,通过使用Django框架通过构架可视化的方式分析数据。

二、数据准备

首先,我们从MySQL数据库中获取处理后的客户数据。这些数据经过预处理和特征工程,包含了客户的各种特征信息,以及是否流失的标签。

# 数据库连接和数据获取
import pandas as pd
import pymysql
from data.mapper import host, user, password, database# 连接MySQL数据库
conn = pymysql.connect(host=host,user=user,password=password,database=database
)# 从MySQL数据库中读取处理后的数据
query = "SELECT * FROM processed_customer_data"
df = pd.read_sql(query, conn)# 关闭数据库连接
conn.close()

三、模型训练与评估

3.1 随机森林模型

随机森林是一种集成学习方法,通过构建多个决策树来进行分类或回归。我们使用随机森林模型对客户的信用卡办卡意愿进行预测,并评估模型性能。

# 随机森林模型训练与评估
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score, classification_report, confusion_matrix# 特征与标签分割
X = df.drop(columns=['Attrition_Flag'])
y = df['Attrition_Flag']# 数据集划分
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=2)# 随机森林模型训练
rf_model = RandomForestClassifier()
rf_model.fit(X_train, y_train)# 模型预测
y_pred = rf_model.predict(X_test)# 模型评估
accuracy = accuracy_score(y_test, y_pred)
classification_rep = classification_report(y_test, y_pred)
conf_matrix = confusion_matrix(y_test, y_pred)

3.2 逻辑回归模型

逻辑回归是一种线性模型,常用于二分类问题。我们同样使用逻辑回归模型对客户的信用卡办卡意愿进行预测,并评估模型性能。

# 逻辑回归模型训练与评估
from sklearn.linear_model import LogisticRegression# 数据集划分
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 逻辑回归模型训练
logreg_model = LogisticRegression()
logreg_model.fit(X_train, y_train)# 模型预测
y_pred = logreg_model.predict(X_test)# 模型评估
accuracy = accuracy_score(y_test, y_pred)
classification_rep = classification_report(y_test, y_pred)
conf_matrix = confusion_matrix(y_test, y_pred)

四、数据可视化

我们使用Django作为后端框架实现数据可视化,通过Pyecharts库创建多种图表,以更直观地展示数据分布和模型评估结果。

# Django视图函数中的数据可视化
from django.shortcuts import render
from pyecharts.charts import Bar, Pie, Line
from pyecharts import options as opts
from pyecharts.globals import CurrentConfig, ThemeTypefrom web.service.task_service import get_custormer_age, get_income_category, get_education_level, get_credit_limit, \get_months_inactive_12_mondef bar_chart(request):# 获取客户年龄分布数据x, y = get_custormer_age()line = (Line().add_xaxis([str(age) for age in x]).add_yaxis("Count", y).set_global_opts(title_opts=opts.TitleOpts(title="客户年龄分布图"),xaxis_opts=opts.AxisOpts(name="Age"),yaxis_opts=opts.AxisOpts(name="Count"),))# 获取客户信用卡额度分布数据x1, y1 = get_credit_limit()line1 = (Line().add_xaxis([str(age) for age in x1]).add_yaxis("Count", y1).set_global_opts(title_opts=opts.TitleOpts(title="客户信用卡额度top10分布图"),xaxis_opts=opts.AxisOpts(name="Age"),yaxis_opts=opts.AxisOpts(name="Count"),))# 获取客户非活跃月数分布数据bar1 = Bar()x1, y1 = get_months_inactive_12_mon()bar1.add_xaxis(x1)bar1.add_yaxis("客户去年非活跃月数分布", y1)# 获取客户收入范围趋势数据bar = Bar()x, y = get_income_category()bar.add_xaxis(x)bar.add_yaxis("收入范围趋势图", y)# 获取客户教育水平分布数据pie = Pie()tuple = get_education_level()pie.add("教育水平分布图", tuple)# 获取图表的JavaScript代码line_js = line.render_embed()bar_js = bar.render_embed()pie_js = pie.render_embed()bar1_js = bar1.render_embed()line1_js = line1.render_embed()return render(request, 'charts/bar_chart.html', {'line': line_js, 'bar': bar_js, 'pie': pie_js, 'line1': line1_js, 'bar1': bar1_js})

五、总结

通过本项目,我们使用了机器学习模型预测了客户的信用卡办卡意愿,并通过Django实现了数据的可视化展示。这使得银行和金融机构能够更好地理解客户行为模式,并做出相应的业务决策。

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

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

相关文章

Ardupilot无人船(车)自动调参

无人船(车)快速调参脚本简化了为无人船(车)角速率和速度控制器调参的过程。 该脚本应该在无人船(车)在Circle模式下循环绕圈时运行。它记录转向和油门输出以及由此产生的响应(例如无人船(车&am…

高精度算法(2)

前言 延续上次所讲的内容再对乘法和除法进行说明,希望有所帮助 注意这里的乘除法都是针对于整数如果要是涉及到小数,我们得使用二分法 通过二分同样可以解决小数精度问题 高精度乘法 思路 我们只能用字符串来读取一个很大很大的数,所以…

阿赵UE学习笔记——28、粒子系统Niagara简介

阿赵UE学习笔记目录 大家好,我是阿赵。   继续学习虚幻引擎的使用。这次开始学习粒子系统的使用。 一、Cascade系统 在介绍UE5的Niagara系统之前,必须先介绍一下旧版本的粒子系统。   在UE4的时候,虚幻引擎的粒子系统叫做Cascade&#x…

【论文阅读】Attention is all you need

摘要 主要的序列转换模型是基于复杂的循环或卷积神经网络,其中包括一个编码器和一个解码器。性能最好的模型还通过一种注意力机制将编码器和解码器连接起来。我们提出了一种新的简单的网络架构,Transformer,完全基于注意机制,完全…

杜牧是唐朝最风流的诗人

杜牧,有“杜紫薇”之称,是宰相杜佑的孙子。李白、杜甫是“大李杜”。杜牧、李商隐是“小李杜”。 杜牧23岁写了《阿房宫赋》,一朝成名天下知。 唐朝晚年,科举和仕途没有出路,杜牧寄情享乐。杜牧怀才不遇,…

C语言--函数递归

目录 1、什么是递归? 1.1 递归的思想 1.2 递归的限制条件 2. 递归举例 2.1 举例1:求n的阶乘 2.2 举例2:顺序打印⼀个整数的每⼀位 3. 递归与迭代 扩展学习: 早上好,下午好,晚上好 1、什么是递归&…

Ubuntu 22.04.4安装Docker引擎

正文共:1024 字 13 图,预估阅读时间:1 分钟 我们前面安装了几次Ubuntu的操作系统(Ubuntu 23.10通过APT安装Open vSwitch),在开始之前,我还是简单提醒一下,从Ubuntu下载页面&#xff…

因式分解技巧1-----一次提净

什么是因式分解? 在小学,我们都学过质因数分解。就比如:,然而我们可以发现!4此时还没有被分解完,于是: 则: 这是小学的质因数分解。那么我们一起看看初中的因式分解。 例1&…

SpringBoot3 函数式web 小记

前言:函数式web是spring5.2之后的一个新特性,Spring Boot 3 进一步优化了这一模型,为开发现代 Web 应用提供了更加灵活、简洁的方法; 函数式web的四大核心对象 - RouterFunction:定义路由信息 - RequestPredicates&am…

深度解析 Spring 源码:三级缓存机制探究

文章目录 一、 三级缓存的概述二、 三级缓存的实现原理2.1 创建Bean流程图2.2 getBean()2.3 doGetBean()2.4 createBean()2.5 doCreateBean()2.4 getSingleton() 三、 三级缓存的使用场景与注意事项3.1 在实际开发中如何使用三级缓存3.2 三级缓存可能出现的问题及解决方法 一、…

检索算法和技术的本质回顾

目录 一、数据结构和存储特点对检索效率的重大影响总结 二、数组和链表的线性结构检索 (一)基本分析 (二)使用二分查找提升数组检索效率 (三)灵活改造链表提升检索效率 问题背景 解决方案 歌曲块链…

循序渐进丨使用 Python 向 MogDB 数据库批量操作数据的方法

当我们有时候需要向数据库里批量插入数据,或者批量导出数据时,除了使用传统的gsql copy命令,也可以通过Python的驱动psycopg2进行批量操作。本文介绍了使用psycopg2里的executemany、copy_from、copy_to、copy_expert等方式来批量操作 MogDB …

[C++][算法基础]求a的b次方模p的值(快速幂)

给定 n 组 ,对于每组数据,求出 的值。 输入格式 第一行包含整数 n。 接下来 n 行,每行包含三个整数 。 输出格式 对于每组数据,输出一个结果,表示 的值。 每个结果占一行。 数据范围 1≤n≤100000, 1≤≤2 …

移动Web学习09-响应式布局bootstrap案例开发

3、综合案例-AlloyTeam移动全端 准备工作 HTML 结构 <title>腾讯全端</title> <link rel"shortcut icon" href"favicon.ico" type"image/x-icon"> <!-- 层叠性&#xff1a;咱们的css 要 层叠 框架的 --> <link rel&…

匿名函数与gorm中的Transaction事务方法

整理下go中的匿名函数&#xff0c;项目中很多地方都在用。 1、函数类型的变量 Go中&#xff0c;函数也是一种数据类型。定义一个函数&#xff0c;把这个函数赋值给一个变量&#xff0c;这个变量就是函数类型的变量&#xff0c;用这个变量等价于直接调函数&#xff1a; packa…

数字阅览室解决方案

一、方案概述 “数字阅览室”概念一经提出&#xff0c;就得到了广泛的关注&#xff0c;纷纷组织力量进行探讨、研究和开发&#xff0c;进行各种模型的试验。随着数字地球概念、技术、应用领域的发展&#xff0c;数字阅览室已成为数字地球家庭的成员&#xff0c;为信息高速公路…

高频前端面试题汇总之JavaScript篇(上)

一、数据类型 1. JavaScript有哪些数据类型&#xff0c;它们的区别&#xff1f; JavaScript共有八种数据类型&#xff0c;分别是 Undefined、Null、Boolean、Number、String、Object、Symbol、BigInt。 其中 Symbol 和 BigInt 是ES6 中新增的数据类型&#xff1a; Symbol 代…

如何免费申请长期HTTPS证书?

长期HTTPS证书申请步骤&#xff1a; 第一步&#xff1a;确定证书类型 根据你的网站需求&#xff0c;选一种适合的HTTPS证书。一般有这几种&#xff1a; - 域名型&#xff08;DV&#xff09;证书&#xff1a;最基础&#xff0c;验证你对域名的所有权&#xff0c;适合个人网站或…

构建有序链表,有序链表的归并,反转链表

本次将对于构建有序链表&#xff0c;有序链表的归并&#xff0c;反转链表&#xff0c;进行一一介绍和代码分享。 首先是一些链表中的基本的函数&#xff1a; Node* creatList() {Node* headNode (Node*)malloc(sizeof(Node));assert(headNode);headNode->next NULL;retu…