Python决策树、随机森林、朴素贝叶斯、KNN(K-最近邻居)分类分析银行拉新活动挖掘潜在贷款客户

article/2025/3/18 19:49:55

最近我们被客户要求撰写关于银行拉新活动的研究报告,包括一些图形和统计输出。

项目背景:银行的主要盈利业务靠的是贷款,这些客户中的大多数是存款大小不等的责任客户(存款人)。银行拥有不断增长的客户。该银行希望增加借款人(资产客户),开展更多的贷款业务,并通过贷款利息赚取更多利润。因此,银行希望将负债的客户转换为个人贷款客户。(同时保留他们作为存款人)。该银行去年针对负债客户开展的一项活动显示,成功实现了9%以上的成功转化率。该部门希望建立一个模型,来帮助他们确定购买贷款可能性更高的潜在客户。可以增加成功率,同时降低成本。

 视频:从决策树到随机森林:R语言信用卡违约分析信贷数据实例

从决策树到随机森林:R语言信用卡违约分析信贷数据实例

,时长10:11

数据集

下面给出的文件包含5000个客户的数据。数据包括客户人口统计信息(年龄,收入等),客户与银行的关系(抵押,证券账户等)以及客户对上次个人贷款活动的因变量(个人贷款)。在这5000个客户中,只有480个(= 9.6%)接受了先前活动中提供给他们的个人贷款

data.head()

data.columns

属性信息

属性可以相应地划分:

  • 变量 ID 一个人的客户ID与贷款之间没有关联,也无法为将来的潜在贷款客户提供任何一般性结论。我们可以忽略此信息进行模型预测。

二进制类别具有五个变量,如下所示:

  • 个人贷款-该客户是否接受上一个广告系列提供的个人贷款? 这是我们的目标变量
  • 证券帐户-客户在银行是否有证券帐户?
  • CD帐户-客户在银行是否有存款证明(CD)帐户?
  • 网上银行-客户是否使用网上银行?
  • 信用卡-客户是否使用银行发行的信用卡?

数值变量如下:

  • 年龄-客户的年龄
  • 工作经验
  • 收入-年收入(元)
  • CCAvg-平均信用卡消费
  • 抵押-房屋抵押价值

有序分类变量是:

  • 家庭-客户的家庭人数
  • 教育程度-客户的教育程度

标称变量是:

  • ID
  • 邮政编码
data.shape

data.info()

# 文件中没有列有空数据
data.apply(lambda x : sum(x.isnull()))

# 对数据进行目测
data.describe().transpose()

 

#查看有多少不同数据
data.apply(lambda x: len(x.unique()))

两两变量散点图

  • 年龄 特征通常是分布的,大多数客户年龄在30岁到60岁之间。
  • 经验 大多分布在8年以上经验的客户。这里的 平均值 等于中 位数。有负数 。这可能是数据输入错误,因为通常无法衡量负面的工作经验。我们可以删除这些值,因为样本中有3或4条记录。
  • 收入出现 正偏斜。大多数客户的收入在45,000到55K之间。我们可以通过说平均值 大于 中位数来确认这一点 
  • CCAvg 也是一个正偏变量,平均支出在0K到10K之间,大多数支出不到2.5K
  • 抵押 70%的人的抵押贷款少于4万。但是最大值为635K
  • 家庭和教育变量是序数变量。家庭分布均匀

有52条记录经验为负数。在进一步进行之前,我们需要对这些记录进行清理

data[data['Experience'] < 0]['Experience'].count()

52

#清理负数变量
dfExp = data.loc[data['Experience'] >0]
data.loc[negExp]['ID'].tolist() # 得到有负数经验的客户ID

有52条负面经验的记录

以下代码执行以下步骤:

  • 对于具有ID的记录,获取Age column的值 
  • 对于具有ID的记录,获取Education column的值 
  • 从具有正数经验的记录的数据框中过滤符合以上条件的记录,并取中位数
  • 将中位数填充原本负数经验的位置


data.loc[np.where(['ID']==id)]["Education"].tolist()[0]
df_filtered['Experience'].median()

# 检查是否有负数经验的记录
data[data['Experience'] < 0]['Experience'].count()

0

收入和教育对个人贷款的影响

boxplot(x='Education',y='Income',data=data)

观察 :看来教育程度为1的客户收入更高。但是,接受了个人贷款的客户的收入水平相同

推论 :从上图可以看出,没有个人贷款的客户和拥有个人贷款的客户的抵押贷款较高。

观察 :大多数没有贷款的客户都有证券账户

观察:家庭人数对个人贷款没有任何影响。但是似乎3岁的家庭更有可能借贷。考虑未来的推广活动时,这可能是一个很好的观察结果。

观察:没有CD帐户的客户,也没有贷款。这似乎占多数。但是几乎所有拥有CD帐户的客户也都有贷款

观察:该图显示有个人贷款的人的信用卡平均费用更高。平均信用卡消费中位数为3800元,表明个人贷款的可能性更高。较低的信用卡支出(中位数为1400元)不太可能获得贷款。这可能是有用的信息。

观察 上图显示与经验和年龄呈正相关。随着经验的增加,年龄也会增加。颜色也显示教育程度。四十多岁之间存在差距,大学以下的人也更多

# 与热图的关联性corr = data.corr()
plt.figure(figsize=(13,7))
# 创建一个掩码,以便我们只看到一次相关的值a = sns.heatmap(corr,mask=mask, annot=True, fmt='.2f')

观察

  • 收入和CCAvg呈中等相关。
  • 年龄和工作经验高度相关

sns.boxplot

看下面的图,收入低于10万的家庭比高收入的家庭更不可能获得贷款。

应用模型

将数据分为训练集和测试集

train_labels = train_set
test_labels = test_set

决策树分类器

DecisionTreeClassifier(class_weight=None, criterion='entropy', ...)

dt_model.score

0.9773333333333334

dt_model.predict(test_set)

预测

array([0, 0, 0, 0, 0])

查看测试集 

test_set.head(5)

朴素贝叶斯

naive_model.fit(train_set, train_labels)
naive_model.score

0.8866666666666667

随机森林分类器

RandomForestClassifier(max_depth=2, random_state=0)

Importance.sort_values

randomforest_model.score(test_set,test_labels)

0.8993333333333333

KNN(K-最近邻居)

data.drop(['Experience' ,'ID'] , axis = 1).drop(labels= "PersonalLoan" , axis = 1)
train_set_dep = data["PersonalLoan"]


acc = accuracy_score(Y_Test, predicted)
print(acc)
0.9106070713809206

模型比较


for name, model in models:kfold = model_selection.KFold(n_splits=10)cv_results = model_selection.cross_val_score(model, X, y, cv, scoring)# 箱线图算法的比较
plt.figure()

 

结论

通用银行的目的是将负债客户转变为贷款客户。他们想发起新的营销活动;因此,他们需要有关数据中给出的变量之间的有联系的信息。本研究使用了四种分类算法。从上图可以看出,随机森林 算法似乎 具有最高的精度,我们可以选择它作为最终模型。



http://chatgpt.dhexx.cn/article/KQJenUSM.shtml

相关文章

潜在客户需要单独管理吗?

通常销售型企业会将客户类型区分为&#xff1a;潜在客户、意向客户和购买客户等状态。那么&#xff0c;潜在客户需要单独拿出来进行管理吗&#xff1f;。 企业从展会、网站、广告及其它市场活动收集来的潜在客户是客户挖掘、获得、细分的主要目标受众&#xff0c;这些线索客户的…

python数据分析与挖掘实战---航空公司客户价值分析

航空公司客户价值分析 一、 背景与挖掘目标 **** 客户关系管理是企业的核心问题&#xff0c;关键在于客户的分类&#xff1a;区别无价值客户&#xff0c;高价值客户&#xff0c;针对不同客户群体有的放矢投放具体服务方案&#xff0c;实现企业利润最大化的目标。 各大航空公…

银行电话精准营销的探索性分析并基于XGboost进行潜在客户预测建模

问题背景&#xff1a; 随着利率市场化改革推进&#xff0c;银行业整体面临息差收窄的压力&#xff0c;不少银行将中间业务收入作为新的利润增长点。其中&#xff0c;以招商银行为代表的一批大型股份制银行&#xff0c;更是将大财富管理模式做到了极致&#xff0c;中间收入占比的…

如何和产品潜在的客户沟通

老于笔记01.10 一个人幸运的前提其实是他有能力改变自己。 正文 和产品潜在的客户沟通很有必要&#xff0c;有时候还需要对他们提供必要指导&#xff0c;这样有助于挖掘他们需求&#xff0c;将他们变成真正的消费者。 1 C端产品的第一批用户很可能来自推消以外的其他渠道&#…

salesforce-使用Web-to-Lead引入网站的潜在客户

salesforce的web-to-lead功能可以将网站的流量转化为潜在客户&#xff0c;只需要用户填写我们在salesforce后台设定好的表单&#xff0c;即可实现将用户填写的信息导流到salesforce后台&#xff0c;从而统一管理网站的潜在客户。 我个人比较习惯在英文环境下操作&#xff0c;我…

链脉刘松华:如何用AI名片发掘更多潜在客户

本文来自链脉联合创始人:刘松华 乐尚七色光美术教育创始人 懂孩子家庭教育讲师 润阳父母大学家庭教育讲师 润阳演讲大学演说训练讲师 链脉名片联合创始人 新营销能量讲师 链脉创富讲师 销售行业需要不断的签单成交就需要不断有潜在客户的加入,所以潜在客户的获取关乎到…

Python爬虫爬取知乎用户信息+寻找潜在客户

【Python应用】寻找社交网络中的目标用户 日后的更新&#xff1a;由于是很久以前的课程设计项目&#xff0c;完整的源码已经不见了&#xff0c;关键的网页数据获取和解析的部分代码我在文章中已经贴出来了&#xff0c;但写的也不够好&#xff0c;如果想参考爬取知乎的同学&…

用户画像实战:基于Kmeas的电商潜在客户识别

电商潜在客户识别 前言 1、任务描述 此数据集仅用于学习客户细分概念&#xff0c;也称为市场篮子分析。我将以最简单的形式使用无监督的ML技术&#xff08;KMeans聚类算法&#xff09;来演示这一点。 通过超市商场会员卡信息&#xff0c;我们可以得到一些关于客户的基本数据…

数据分析,把握商机 关键词采集工具助你挖掘潜在客户

数据分析&#xff0c;是指对大量的数据进行收集、处理、分析和解析的过程&#xff0c;从而发现其中隐含的规律、趋势和价值信息。而在商业领域&#xff0c;数据分析则是一种能力&#xff0c;可以帮助企业更好地了解市场、客户和竞争对手&#xff0c;把握商机&#xff0c;提高效…

营销自动化如何帮助你挖掘潜在客户?

点击上方“AI公园”&#xff0c;关注公众号&#xff0c;选择加“星标“或“置顶” 作者&#xff1a;Xen Chia 编译&#xff1a;ronghuaiyang 导读 看看如何使用营销自动化工具来得到潜在客户。 你如何争取潜在客户&#xff1f; 如果你的答案将是“购买潜在客户”&#xff0c;那…

Python实现预测信用卡潜在客户

一、数据集 有一家名为Happy Customer Bank (快乐客户银行) 的银行&#xff0c;是一家中型私人银行&#xff0c;经营各类银行产品&#xff0c;如储蓄账户、往来账户、投资产品、信贷产品等。 该银行还向现有客户交叉销售产品&#xff0c;为此他们使用不同类型的通信方式&…

数据挖掘(二)预测潜在贷款发放客户

注&#xff1a;参考多篇csdn及b站文章所得 一、实验背景 某机构想要预测哪些客户可能会产生贷款违约行为&#xff61;他们搜集了历史客户行为的部分数据以及目标客户的信息,希望通过历史数据对目标客户进行预测哪些客户会是潜在的违约客户,从而缩小目标范围,实现低风险贷款发…

淘宝客服话术《挖掘每一个潜在客户》

在这个电商行业的时代&#xff0c;作为一名淘宝客服人员&#xff0c;与店铺之间的关系是密不可言的&#xff0c;客服相当于店铺的门面&#xff0c;也是和客户第一接触者&#xff0c;重要性可想而知。 随着客服岗位的泛滥&#xff0c;客服之间的能力也是参差不齐的&#xff0c;想…

依据数据简单分析,发掘潜在客户

大数据概论作业(一) 信息技术的不断发展让人们离不开科技,我们每天使用各类电子产品所产生的信息数据不计其数,而这些数据的合理利用将会使我们的生活更加的便捷,所以,大数据俨然已成为现在前沿科技。的研究热点,大数据来源于我们生活的方方面面,也必将影响着我们…

生成微信小程序码、URL Scheme和URL Link

通用第一步,获取access_token,需要服务端去获取并缓存 (APPID和APPSECRET在微信小程序后台查看获取) https://api.weixin.qq.com/cgi-bin/token?grant_typeclient_credential&appidAPPID&secretAPPSECRET 1.获取小程序码(通过该接口生成的小程序码&#xff0c;永久有…

如何生成小程序太阳码

近期在小程序管理后台发现了生成太阳码的工具&#xff0c;以此来记录下。 登录微信公众平台&#xff08;https://mp.weixin.qq.com/&#xff09; 菜单栏工具->生成小程序码 输入页面路径->点击确定->右击保存太阳码 注意&#xff1a; 生成的页面路径必须是已发布的&am…

php小程序码生成并保存,小程序中如何生成小程序码

导语&#xff1a; 小程序是一种不需要下载安装即可使用的应用&#xff0c;它实现了应用“触手可及”的梦想&#xff0c;用户扫一扫或者搜一下即可打开应用。也体现了“用完即走”的理念&#xff0c;用户不用关心是否安装太多应用的问题。应用将无处不在&#xff0c;随时可用&am…

uniapp小程序生成小程序码

文章目录 前言一、自测版本二、线上版本三、测试总结 前言 需求&#xff1a;用户通过扫描小程序码&#xff0c;直接跳转到小程序的登陆页&#xff0c;并自动填充推荐码 一、自测版本 用于前端自己测试如何生成小程序码 <!-- 以图片的形式展示 --> <image :src"…

微信小程序开发实战9_1 生成小程序码

9.1 小程序的入口场景 为了便于商家进行小程序的推广&#xff0c;微信提供了多种小程序入口的方式&#xff0c;用户可以通过常规的方式来使用小程序&#xff1a;例如用户可以通过搜索关键字来搜索并进入小程序&#xff0c;也可以通过附近的小程序来选择并进入小程序。用户还可…

微信小程序生成小程序码和展示

云函数代码&#xff1a; // 云函数入口文件 const cloud require(wx-server-sdk) cloud.init({env: cloud.DYNAMIC_CURRENT_ENV })// 云函数入口函数 exports.main async (event, context) > {try {const result await cloud.openapi.wxacode.getUnlimited({scene:event…