0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

用Python算法预测客户行为案例!

数据分析与开发 来源:CSDN 作者:ChangingWudake 2022-10-27 13:14 次阅读

这是一份kaggle上的银行的数据集,研究该数据集可以预测客户是否认购定期存款y。这里包含20个特征。

1. 分析框架

ab54dfda-55b5-11ed-a3b6-dac502259ad0.png

2. 数据读取,数据清洗

#导入相关包
importnumpyasnp
importpandasaspd
#读取数据
data=pd.read_csv('./1bank-additional-full.csv')
#查看表的行列数
data.shape

输出:

ab69c184-55b5-11ed-a3b6-dac502259ad0.pngab7ee2a8-55b5-11ed-a3b6-dac502259ad0.png

这里只有nr.employed这列有丢失数据,查看下:

data['nr.employed'].value_counts()
ab8febf2-55b5-11ed-a3b6-dac502259ad0.png

这里只有5191.0这个值,没有其他的,且只有7763条数据,这里直接将这列当做异常值,直接将这列直接删除了。

#data.drop('nr.employed',axis=1,inplace=True)

3. 探索性数据分析

3.1查看各年龄段的人数的分布

这里可以看出该银行的主要用户主要集中在23-60岁这个年龄层,其中29-39这个年龄段的人数相对其他年龄段多。

importmatplotlib.pyplotasplt
importseabornassns
plt.rcParams['font.sans-serif']='SimHei'
plt.figure(figsize=(20,8),dpi=256)
sns.countplot(x='age',data=data)
plt.title("各年龄段的人数")
aba1f54a-55b5-11ed-a3b6-dac502259ad0.png

3.2 其他特征的一些分布

plt.figure(figsize=(18,16),dpi=512)
plt.subplot(221)
sns.countplot(x='contact',data=data)
plt.title("contact分布情况")

plt.subplot(222)
sns.countplot(x='day_of_week',data=data)
plt.title("day_of_week分布情况")

plt.subplot(223)
sns.countplot(x='default',data=data)
plt.title("default分布情况")

plt.subplot(224)
sns.countplot(x='education',data=data)
plt.xticks(rotation=70)
plt.title("education分布情况")

plt.savefig('./1.png')
abaf93a8-55b5-11ed-a3b6-dac502259ad0.png
plt.figure(figsize=(18,16),dpi=512)
plt.subplot(221)
sns.countplot(x='housing',data=data)
plt.title("housing分布情况")

plt.subplot(222)
sns.countplot(x='job',data=data)
plt.xticks(rotation=70)
plt.title("job分布情况")

plt.subplot(223)
sns.countplot(x='loan',data=data)
plt.title("loan分布情况")

plt.subplot(224)
sns.countplot(x='marital',data=data)
plt.xticks(rotation=70)
plt.title("marital分布情况")

plt.savefig('./2.png')
ac1c1ffa-55b5-11ed-a3b6-dac502259ad0.png
plt.figure(figsize=(18,8),dpi=512)
plt.subplot(221)
sns.countplot(x='month',data=data)
plt.xticks(rotation=30)

plt.subplot(222)
sns.countplot(x='poutcome',data=data)
plt.xticks(rotation=30)
plt.savefig('./3.png')
ac34c794-55b5-11ed-a3b6-dac502259ad0.png

3.3 各特征的相关性

plt.figure(figsize=(10,8),dpi=256)
plt.rcParams['axes.unicode_minus']=False
sns.heatmap(data.corr(),annot=True)
plt.savefig('./4.png')
ac414b4a-55b5-11ed-a3b6-dac502259ad0.png

4. 特征规范化

4.1 将自变量的特征值转换成标签类型

#特征化数据
fromsklearn.preprocessingimportLabelEncoder
features=['contact','day_of_week','default','education','housing',
'job','loan','marital','month','poutcome']

le_x=LabelEncoder()
forfeatureinfeatures:
data[feature]=le_x.fit_transform(data[feature])

4.2 将结果y值转换成0、1

defparse_y(x):
if(x=='no'):
return0
else:
return1
data['y']=data['y'].apply(parse_y)
data['y']=data['y'].astype(int)

4.3 数据规范化

#数据规范化到正态分布的数据
#测试数据和训练数据的分割
fromsklearn.preprocessingimportStandardScaler
fromsklearn.model_selectionimporttrain_test_split
ss=StandardScaler()
train_x,test_x,train_y,test_y=train_test_split(data.iloc[:,:-1],
data['y'],
test_size=0.3)
train_x=ss.fit_transform(train_x)
test_x=ss.transform(test_x)

5. 模型训练

5.1 AdaBoost分类器

fromsklearn.ensembleimportAdaBoostClassifier
fromsklearn.metricsimportaccuracy_score
ada=AdaBoostClassifier()
ada.fit(train_x,train_y)
predict_y=ada.predict(test_x)
print("准确率:",accuracy_score(test_y,predict_y))
ac766c58-55b5-11ed-a3b6-dac502259ad0.png

5.2 SVC分类器

fromsklearn.svmimportSVC
svc=SVC()
svc.fit(train_x,train_y)
predict_y=svc.predict(test_x)
print("准确率:",accuracy_score(test_y,predict_y))
ac8cedf2-55b5-11ed-a3b6-dac502259ad0.png

5.3 K邻近值分类器

fromsklearn.neighborsimportKNeighborsClassifier
knn=KNeighborsClassifier()
knn.fit(train_x,train_y)
predict_y=knn.predict(test_x)
print("准确率:",accuracy_score(test_y,predict_y))
aca7deb4-55b5-11ed-a3b6-dac502259ad0.png

5.4 决策树分类器

fromsklearn.treeimportDecisionTreeClassifier
dtc=DecisionTreeClassifier()
dtc.fit(train_x,train_y)
predict_y=dtc.predict(test_x)
print("准确率:",accuracy_score(test_y,predict_y))
acbbf70a-55b5-11ed-a3b6-dac502259ad0.png

6 模型评价

6.1 AdaBoost分类器

fromsklearn.metricsimportroc_curve
fromsklearn.metricsimportauc
plt.figure(figsize=(8,6))
fpr1,tpr1,threshoulds1=roc_curve(test_y,ada.predict(test_x))
plt.stackplot(fpr1,tpr1,color='steelblue',alpha=0.5,edgecolor='black')
plt.plot(fpr1,tpr1,linewidth=2,color='black')
plt.plot([0,1],[0,1],ls='-',color='red')
plt.text(0.5,0.4,auc(fpr1,tpr1))
plt.title('AdaBoost分类器的ROC曲线')
acd2f4a0-55b5-11ed-a3b6-dac502259ad0.png

6.2 SVC分类器

plt.figure(figsize=(8,6))
fpr2,tpr2,threshoulds2=roc_curve(test_y,svc.predict(test_x))
plt.stackplot(fpr2,tpr2,alpha=0.5)
plt.plot(fpr2,tpr2,linewidth=2,color='black')
plt.plot([0,1],[0,1],ls='-',color='red')
plt.text(0.5,0.4,auc(fpr2,tpr2))
plt.title('SVD的ROC曲线')
ace52328-55b5-11ed-a3b6-dac502259ad0.png

6.3 K邻近值分类器

plt.figure(figsize=(8,6))
fpr3,tpr3,threshoulds3=roc_curve(test_y,knn.predict(test_x))
plt.stackplot(fpr3,tpr3,alpha=0.5)
plt.plot(fpr3,tpr3,linewidth=2,color='black')
plt.plot([0,1],[0,1],ls='-',color='red')
plt.text(0.5,0.4,auc(fpr3,tpr3))
plt.title('K邻近值的ROC曲线')
ad0006ac-55b5-11ed-a3b6-dac502259ad0.png

6.4 决策树分类器

plt.figure(figsize=(8,6))
fpr4,tpr4,threshoulds4=roc_curve(test_y,dtc.predict(test_x))
plt.stackplot(fpr4,tpr4,alpha=0.5)
plt.plot(fpr4,tpr4,linewidth=2,color='black')
plt.plot([0,1],[0,1],ls='-',color='red')
plt.text(0.5,0.4,auc(fpr4,tpr4))
plt.title('决策树的ROC曲线')
ad123c96-55b5-11ed-a3b6-dac502259ad0.png

审核编辑 :李倩


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 算法
    +关注

    关注

    23

    文章

    4599

    浏览量

    92617
  • 数据分析
    +关注

    关注

    2

    文章

    1427

    浏览量

    34006
  • python
    +关注

    关注

    55

    文章

    4778

    浏览量

    84439

原文标题:用 Python 算法预测客户行为案例!

文章出处:【微信号:DBDevs,微信公众号:数据分析与开发】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    电梯按需维保——“故障预测算法模型数据分析

    梯云物联的智能AI终端在故障预测算法模型数据分析中扮演着核心角色,其工作流程涵盖了数据采集、特征提取、模型构建、故障预测与预警等多个环节,形成了一套完整的电梯故障预测解决方案。
    的头像 发表于 10-15 14:32 256次阅读

    旗晟机器人人员行为监督AI智慧算法

    ,以实现对工业场景巡检运维的高效化目标。那么,下面我们来谈谈旗晟机器人AI智慧算法之一——人员行为监督AI智慧算法。 旗晟人员行为监督AI智慧算法
    的头像 发表于 07-24 17:05 259次阅读
    旗晟机器人人员<b class='flag-5'>行为</b>监督AI智慧<b class='flag-5'>算法</b>

    Python建模算法与应用

    上成为理想的脚本语言,特别适用于快速的应用程序开发。本文将详细介绍Python在建模算法中的应用,包括常见的建模算法Python在建模中的优势、常用库以及实际案例。
    的头像 发表于 07-24 10:41 453次阅读

    python写验证环境cocotb

    本文介绍了cocotb的安装、python tb文件的写法、xrun仿真cocotb的脚本等,我们来看看体验如何。
    的头像 发表于 07-24 09:38 465次阅读
    <b class='flag-5'>用</b><b class='flag-5'>python</b>写验证环境cocotb

    如何实现Python复制文件操作

    Python 中有许多“开盖即食”的模块(比如 os,subprocess 和 shutil)以支持文件 I/O 操作。在这篇文章中,你将会看到一些 Python 实现文件复制的特殊方法。下面我们开始学习这九种不同的方法来实现
    的头像 发表于 07-18 14:53 363次阅读

    matlab预测模型怎么

    MATLAB预测模型是一种基于统计和数学方法的预测工具,广泛应用于各种领域,如金融、气象、生物医学等。本文将介绍MATLAB预测模型的使用方法。 数据预处理 数据预处理是预测模型建立的
    的头像 发表于 07-11 14:33 534次阅读

    python做bp神经网络预测数据

    BP神经网络(Backpropagation Neural Network)是一种多层前馈神经网络,通过反向传播算法进行训练。它在许多领域,如模式识别、数据挖掘、预测分析等,都有广泛的应用。本文将
    的头像 发表于 07-11 10:54 1059次阅读

    pycharm进行python爬虫的步骤

    以下是使用PyCharm进行Python爬虫的步骤: 安装PyCharm和Python 首先,您需要安装PyCharm和Python。PyCharm是一个流行的Python集成开发环境
    的头像 发表于 07-11 10:11 684次阅读

    AI行为识别视频监控系统 Python

    AI行为识别视频监控系统来自机器视觉技术的革新。机器视觉技术应用是人工智能技术分析的一个支系。它可以在图形和图象具体内容叙述中间创建投射关联,使电脑可以根据图像处理和剖析比较,进而熟悉视频图象中
    的头像 发表于 07-06 10:36 476次阅读
    AI<b class='flag-5'>行为</b>识别视频监控系统 <b class='flag-5'>Python</b>

    神经网络的基本原理及Python编程实现

    神经网络作为深度学习算法的基本构建模块,模拟了人脑的行为,通过互相连接的节点(也称为“神经元”)实现对输入数据的处理、模式识别和结果预测等功能。本文将深入探讨神经网络的基本原理,并结合Pyth
    的头像 发表于 07-03 16:11 505次阅读

    Raspberry Pi树莓派使用Python实现MQTT通信设计

    这次的例子,主要讲述如何基于PYTHON的 MQTT 客户端的使用方法
    的头像 发表于 03-14 11:45 742次阅读
    Raspberry Pi树莓派使用<b class='flag-5'>Python</b>实现MQTT通信设计

    传感器数据融合算法python代码

    的原理和应用,并给出一些使用Python编程语言实现传感器数据融合算法的示例代码。 首先,让我们来了解传感器数据融合算法的原理。传感器数据融合算法的一个关键概念是通过多个传感器的数据来
    的头像 发表于 12-15 10:28 1364次阅读

    Python运行环境有哪些

    ,也是最常用的解释器。它是C语言编写的,支持C的扩展和嵌入。CPython可以在各个操作系统上运行,并提供了Python的核心功能。 JPython: JPython是Python的Java实现,它可
    的头像 发表于 11-29 16:14 1905次阅读

    python shell怎么

    Python Shell是一种交互式解释器,可以通过命令行直接运行Python代码。在Shell中,可以输入一行代码并立即得到结果,非常适合于测试、尝试新代码或进行简单的任务。本文将详细介绍
    的头像 发表于 11-29 14:36 1098次阅读

    Python2与Python3的差异

    Python2与Python3是两个不同的版本,它们在语法、功能和性能等方面存在一些差异。下面是对Python2和Python3的详尽、详实、细致的比较,分为以下几个方面: 语法差异:
    的头像 发表于 11-23 16:48 908次阅读