Python实现多元线性回归模型信用卡客户价值预测项目源码+数据+项目设计报告

多元线性回归——信用卡客户价值预测

一、背景

这里以信用卡客户的客户价值为例来解释客户价值预测的具体含义:

客户价值预测就是指预测客户在未来一段时间内能带来多少利润,其利润可能来自信用卡的年费、取现手续费、分期手续费、境外交易手续费等。分析出客户价值后,在进行营销、电话接听、催收、产品咨询等各项业务时,就可以针对高价值客户提供区别于普通客户的服务,以进一步挖掘这些高价值客户的价值,并提高他们的忠诚度。

二、数据

  • “客户价值”列为在1年里能给银行带来的收益;
  • “学历”列的数据已经做了预处理,其中
    • 2代表高中及以下学历
    • 3代表本科及以上学历
  • “性别”列中,0 代表女,1 代表男

部分数据如下:

客户价值历史贷款金额贷款次数学历月收入性别
1096625322105670
1558477932102171
1681775233103171
103752313296671
1333548523105670

三、代码实现

1、导入Python库,引入所需的功能和模块。

import matplotlib.pyplot as plt  # 用于绘制数据可视化图形,例如折线图、散点图等
import pandas as pd  # 用于数据处理和分析,提供了高效的数据结构和数据操作功能
import statsmodels.api as sm  # 用于执行统计模型的拟合和推断,包括回归分析、时间序列分析等
from sklearn.linear_model import LinearRegression  # 用于进行线性回归建模和预测
from sklearn.model_selection import train_test_split  # 将数据集分割为训练集和测试集,常用于机器学习中的模型评估和验证

2、读取数据

    data = pd.read_excel(file_path)  # 使用pd.read_excel()函数读取名为'客户价值数据表.xlsx'的Excel文件,并将其存储在data变量中# 根据指定的测试集比例(这里是20%)将数据分割为训练集和测试集,并且设置了一个随机种子(这里是42)以确保结果可复现train_data, test_data = train_test_split(data, test_size=0.2, random_state=42)X = data[['历史贷款金额', '贷款次数', '学历', '月收入', '性别']]  # 从data中选取'历史贷款金额'、'贷款次数'、'学历'、'月收入'、'性别'这几列作为自变量,并将其存储在X变量中Y = data['客户价值']  # 从data中选取'客户价值'这一列作为因变量,并将其存储在Y变量中X_test = test_data[['历史贷款金额', '贷款次数', '学历', '月收入', '性别']]Y_test = test_data['客户价值']

3、搭建多元线性回归模型

    Regress = LinearRegression()  # 创建一个LinearRegression对象,并将其存储在Regress变量中Regress.fit(X, Y)  # 使用X和Y进行线性回归拟合,得到回归模型Predict = Regress.predict(X)  # 对五个特征变量进行回归预测# 2.1绘制真实值和与预测值的散点图形plt.scatter(Y, Predict)# 2.2设置图例plt.xlabel('Actual Value')plt.ylabel('Predicted Value')plt.title('Regression Graph')plt.show()  # 显示

真实值和与预测值的散点图形

在这里插入图片描述

添加一条拟合线

    plt.plot([Y.min(), Y.max()], [Y.min(), Y.max()], 'r-')

在这里插入图片描述

4、构造多元线性回归方程表达式

    K = Regress.coef_b = Regress.intercept_print('各斜率系数为:\n', str(K))  # 打印输出回归模型的各系数值print('常数项系数k0(截距)为:\n', str(b))  # 打印输出回归模型的常数项系数k0expression = construct_expression(K, b)  # 计算多元线性回归方程函数表达式print("多元线性回归方程为:\n", expression)

各斜率系数为:
[5.71421731e-02 9.61723492e+01 1.13452022e+02 5.61326459e-02 1.97874093e+00]

常数项系数k0(截距)为:
-208.42004079958429

多元线性回归方程为:
Y = -208 + 0.057X1 + 96X2 + 113X3 + 0.056X4 + 1.98X5

5、模型评估

    X1 = sm.add_constant(X)  # 在X变量中添加常数列,并将新的X变量存储在X1中est = sm.OLS(Y, X1).fit()  # 使用OLS方法进行普通最小二乘回归拟合,得到回归模型的估计值,将结果存储在est变量中print('\n\n回归模型的统计摘要信息如下:\n', est.summary())  # 输出回归模型的统计摘要信息

运行输出如下:可以看到,模型的R-squared值为0.571,Adj.R-squared值为0.553,整体拟合效果不是特别好,可能是因为本案例的数据量偏少,不过在此数据量条件下也算可以接受的结果。再来观察P值,可以发现大部分特征变量的P值都较小,的确与目标变量(即“客户价值”)显著相关,而“性别”这一特征变量的P值达到了0.951,即与目标变量没有显著相关性,这个结论也符合经验认知,因此,在之后的建模中可以舍去“性别”这一特征变量

在这里插入图片描述

6、模型预测

predict_new_data(Regress, X_test, Y_test)

运行输出如下:

在这里插入图片描述

在这里插入图片描述

真实值与预测值对比图

在这里插入图片描述

7、相关函数

# 构造函数表达式
# 表达式中的系数值在-1到1之间的要保留三位小数,系数值在-10到-1以及1到10之间的要保留两位小数,其余保留整数
def construct_expression(K, b):expression = f"Y = {int(b)}"for i, coef in enumerate(K):if -10 <= coef <= -1 or 1 <= coef <= 10:expression += f" + {coef:.2f}*X{i + 1}"elif -1 <= coef <= 1:expression += f" + {coef:.3f}*X{i + 1}"else:expression += f" + {int(coef)}*X{i + 1}"return expression# 模型预测
def predict_new_data(model, X_new, Y_new):print("\n\n\n\n模型预测使用的数据如下:\n", X_new)new_prediction = model.predict(X_new)print('模型预测数据的预测结果:\n', new_prediction)# 绘制真实值与预测值对比图plt.plot(Y_new['客户价值'].tolist(), label='Actual Value')plt.plot(new_prediction, label='Predicted Value')plt.xlabel('Sample Index')plt.ylabel('Value')plt.title('Regression Curve Comparison')plt.legend()plt.show()

8、程序入口

# 程序入口
if __name__ == '__main__':path = '客户价值数据表.xlsx'multiple_linear_regression(path)  # 调用函数并传入数据文件的路径

完整代码下载地址:Python实现多元线性回归模型信用卡客户价值预测

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

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

相关文章

三、万语始于HelloWorld,万物基于点灯之瑞萨RX23E-A 3线RTD PT100测温

一、概述/目的 二、RX23E-APT100三线制 2.1 资料来源 2.2 接线图 2.3 工程配置AFE24ΔΣADCPGA 2.4 代码 2.5 IIR数字滤波器 三、方案对比 三、万语始于HelloWorld&#xff0c;万物基于点灯之瑞萨RX23E-A 3线RTD PT100测温 一、概述/目的 介绍工业过程控制…

DAPLink源码固件编译与制作

DAPLink源码固件编译与制作 ✨这里以Air/stm32f103cbt6固件编译为例。&#x1f4cc;DAPLink源码地址&#xff1a;https://github.com/ARMmbed/DAPLink&#x1f516; 如果不想自己生成&#xff0c;可以使用合宙提供的现成的工程以及固件&#xff1b;https://gitee.com/openLuat/…

官方指定Jmeter配置JVM堆内存方式

1.概述 在使用Jmeter做性能测试过程中&#xff0c;可能会应为默认设置的堆内存值较小出现堆内存溢出问题&#xff0c;此时解决的方式有两种&#xff0c;分布式测试和调大堆内存。下面介绍官方推荐调整堆内存方法。 2.调整Jmeter堆内存 2.1.介绍官方推荐堆内存调整方法(jmete…

mysql原理--连接的原理

1.连接简介 1.1.连接的本质 为了故事的顺利发展&#xff0c;我们先建立两个简单的表并给它们填充一点数据&#xff1a; mysql> CREATE TABLE t1 (m1 int, n1 char(1)); mysql> CREATE TABLE t2 (m2 int, n2 char(1)); mysql> INSERT INTO t1 VALUES(1, a), (2, b), (…

攻防世界-web-ics07

1. 题目描述 工控云管理系统项目管理页面解析漏洞 打开链接&#xff0c;是这样的一个界面 我们点击项目管理 可以看到&#xff0c;这里有一个查询界面&#xff0c;还有个view-source的链接&#xff0c;我们点击下view-source&#xff0c;可以看到这里面共有三段php代码 第一段…

在Spring Cloud中使用Zuul网关实现一个案例

本篇依旧是在Spring Cloud系列的博主已经搭建的Spring Cloud微服务模块上进行的&#xff0c;注意&#xff0c;本文依旧适合初学者和或者在Spring Cloud框架了解不是很深入的基础的开发者&#xff0c;本系列说不上有多高大上&#xff0c;博主坚持通过简单的案例&#xff0c;让开…

嵌入式中GPIO的工作原理-面试工作必会技能

GPIO工作方式 1、4种输入模式 输入浮空输入上拉输入下拉模拟输入 如下图为GPIO的基本结构&#xff0c;它主要由4部分组成&#xff0c;其中我们所看到的的最右边的I/O引脚&#xff0c;也就是芯片外接可看到的引脚&#xff0c;其它的部分都是GPIO内部的结构。 ①保护二极管 保护…

【新版HI3559AV100开发注意事项(二)】

#新版HI3559AV100开发注意事项&#xff08;二&#xff09; 十一、请问海思HI3559AV100 SPC030资料里面的HI3559ADMEB_VER_C_PCB.pcb是用什么软件打开啊&#xff1f; 答&#xff1a;PADS VX 2.2 Altium designer 十二、hi3559级联问题请教 在SDK的文档中只看到了两块Hi3559板…

服务器数据恢复-EMC存储raid5磁盘物理故障离线的数据恢复案例

服务器数据恢复环境&故障&#xff1a; 一台emc某型号存储服务器&#xff0c;存储服务器上组建了一组raid5磁盘阵列&#xff0c;阵列中有两块磁盘作为热备盘使用。存储服务器在运行过程中有两块磁盘出现故障离线&#xff0c;但是只有一块热备盘激活&#xff0c;最终导致该ra…

【️如何理解Java中的多态】

✅如何理解Java中的多态&#xff1f; ✅理解Java中的多态 ✅ 扩展知识仓✅方法的重载✅方法的重写✅重载和重写的区别区分 ✅理解Java中的多态 多态的概念比较简单&#xff0c;就是同一操作作用于不同的对象&#xff0c;可以有不同的解释&#xff0c;产生不同的执行结果。 如果…

Java 中的内部类的定义

目录 一、成员内部类 二、静态内部类 三、局部内部类 四、匿名内部类 一、成员内部类 public class InnerClass {String name;private Integer age;static String hobby;/*** 成员内部类* 1、成员内部类中只能定义非静态属性和方法* 2、成员内部类中可以访问外部类的成员&a…

vue3表格导入导出.xlsx

在这次使用时恰好整出来了&#xff0c;希望大家也能学习到&#xff0c;特此分享出来 使用前确保安装以下模块&#xff0c;最好全局配置element-plus ### 展示一下 ### ###导出选项 ### ###导入de数据 ### 安装的模块 npm install js-table2excel // 安装js-table2excel n…

自动化测试工具选择指南

随着软件开发周期的不断缩短和需求的增加&#xff0c;自动化测试变得愈发重要。然而&#xff0c;选择适合项目的自动化测试工具并非易事。以下是一些指导原则&#xff0c;帮助你在众多自动化测试工具中做出明智的选择。 1. 项目需求分析 在选择自动化测试工具之前&#xff0c;首…

海康威视对讲广播系统 RCE漏洞复现(CVE-2023-6895)

0x01 产品简介 Hikvision Intercom Broadcasting System是中国海康威视(Hikvision)公司的一个对讲广播系统。 0x02 漏洞概述 Hikvision Intercom Broadcasting System 3.0.3_20201113_RELEASE(HIK)版本存在操作系统命令注入漏洞,该漏洞源于文件/php/ping.php的参数jsonda…

阿里云k8s集群搭建

文章目录 一、安装前准备1.环境2.k8s集群规划 二、k8s 安装1. centos基础设置2. docker 安装3. k8s安装3.1 添加阿里云 yum 源3.2 安装 kubeadm、kubelet、kubectl3.3 部署 Kubernetes Master3.4 加入 Kubernetes Node3.5 部署 CNI 网络插件3.6 测试 kubernetes 集群 一、安装前…

Python | Flask测试:发送post请求的接口测试

HTTP/1.1 协议规定的 HTTP 请求方法有OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE、CONNECT 几种。POST通常用来向服务端提交数据&#xff0c;主要用于提交表单、上传文件。 HTTP 协议是以ASCII码传输&#xff0c;建立在 TCP/IP 协议之上的应用层规范。规范把 HTTP 请求分为…

浅析:智能化视频安全监管系统的设计与实现步骤

关于智能化视频监管方案&#xff0c;小编已经和大家分享了很多&#xff0c;今天就和大家来探讨一下关于智能化视频安全监管系统的设计与实现步骤。 首先需要分析需求。要与使用者和业务部门合作&#xff0c;明确系统的功能和需求&#xff0c;例如&#xff0c;确定监控区域、安…

MyBatis——MyBatis的原始Dao开发(了解)

MyBatis的原始Dao开发-了解 使用Mybatis开发Dao&#xff0c;通常有两个方法&#xff0c;即原始Dao开发方式和Mapper接口代理开发方式。而现在主流的开发方式是接口代理开发方式&#xff0c;这种方式总体上更加简便。在之前的文章已经给大家介绍了基于代理方式的dao开发&#x…

在scrapy 使用selenium模拟登录获取cookie

前言 最近有一点点爬虫需求&#xff0c;想总结一下scrapy框架的一些基本使用方法&#xff0c;加深印象&#xff0c;自己一直习惯使用一些脚本文件运行爬虫&#xff0c;面对数据量非常大&#xff0c;稳定性要求比较高的&#xff0c;效率需求比较高的情况下还是用scrapy较为合适…

Azure Machine Learning - 提示工程高级技术

本指南将指导你提示设计和提示工程方面的一些高级技术。 关注TechLead&#xff0c;分享AI全维度知识。作者拥有10年互联网服务架构、AI产品研发经验、团队管理经验&#xff0c;同济本复旦硕&#xff0c;复旦机器人智能实验室成员&#xff0c;阿里云认证的资深架构师&#xff0c…