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

    文章

    4762

    浏览量

    97242
  • 数据分析
    +关注

    关注

    2

    文章

    1508

    浏览量

    35960
  • python
    +关注

    关注

    57

    文章

    4859

    浏览量

    89644

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

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

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    没有专利的opencv-python 版本

    所有 官方发布的 opencv-python 核心版本(无 contrib 扩展)都无专利风险——专利问题仅存在于 opencv-contrib-python 扩展模块中的少数算法(如早期 SIFT
    发表于 12-13 12:37

    Python中借助NVIDIA CUDA Tile简化GPU编程

    兼容未来的 GPU 架构。借助 NVIDIA cuTile Python,开发者可以直接 Python 编写 tile kernels。
    的头像 发表于 12-13 10:12 562次阅读
    在<b class='flag-5'>Python</b>中借助NVIDIA CUDA Tile简化GPU编程

    labview如何实现数据的采集与实时预测

    现有以下问题:labview可以实现数据的采集以及调用python代码,但如何将这两项功能集成在一个VI文件里,从而实现数据的采集与实时预测。现有条件如下:已完成数据的采集系统,python中的
    发表于 12-03 21:13

    基于全局预测历史的gshare分支预测器的实现细节

    GShare预测机制简介 GShare预测机制作为一种常用的分支预测机制,通过基于分支历史和分支地址来预测分支指令的执行路径。分支历史是指处理器在执行程序时遇到的所有分支指令的执行情
    发表于 10-22 06:50

    Python 给 Amazon 做“全身 CT”——可量产、可扩展的商品详情爬虫实战

    一、技术选型:为什么选 Python 而不是 Java? 结论: “调研阶段 Python,上线后如果 QPS 爆表再考虑 Java 重构。” 二、整体架构速览(3 分钟看懂) 三、开发前准备(5
    的头像 发表于 10-21 16:59 392次阅读
    <b class='flag-5'>用</b> <b class='flag-5'>Python</b> 给 Amazon 做“全身 CT”——可量产、可扩展的商品详情爬虫实战

    Python modbus-tk如何获得客户端信息?

    Python modbus-tk如何获得客户端信息
    发表于 08-07 06:01

    如何用AI实现电池寿命的精准预测?飞凌RK3588+融合算法给你答案

    飞凌嵌入式将AI算法(CNN+LSTM融合)和RK3588核心板相结合,成功突破这些限制,带来高效、精准的锂电池寿命预测
    的头像 发表于 06-20 10:07 3344次阅读
    如何用AI实现电池寿命的精准<b class='flag-5'>预测</b>?飞凌RK3588+融合<b class='flag-5'>算法</b>给你答案

    工地AI行为识别系统作用

    工地AI行为识别系统作用 工地AI行为识别系统是什么? 工地AI行为识别系统是一种基于人工智能技术的智能监控方案,通过摄像头+AI算法,实时分析工地人员
    的头像 发表于 05-08 12:00 737次阅读

    景区AI行为识别系统作用

    景区AI行为识别系统作用 景区AI行为识别系统是什么? 景区AI行为识别系统是利用人工智能技术(如视频分析、人脸识别)构建的智能管理方案。通过部署摄像头+AI算法,实时监控游客
    的头像 发表于 05-07 15:32 679次阅读
    景区AI<b class='flag-5'>行为</b>识别系统作用

    工厂园区AI行为识别系统作用

    工厂园区AI行为识别系统作用 工厂园区AI行为识别系统是什么? 工厂园区AI行为识别系统是基于人工智能技术的智能化管理方案,通过摄像头与AI算法融合,实时监控人员
    的头像 发表于 05-06 17:49 517次阅读

    采用可更新且具区分度锚点的多模态运动预测研究

    在自动驾驶领域,运动预测 (Motion Prediction) 是一个重要任务,它有助于场景理解和安全决策。该任务利用历史状态和道路地图来预测目标智能体的未来轨迹。其主要挑战来自未来行为的多模态性 (Multimodality
    的头像 发表于 04-01 10:32 645次阅读
    采用可更新且具区分度锚点的多模态运动<b class='flag-5'>预测</b>研究

    DLP6500能否Python编程进行开发,是否有API接口?

    本人第一次接触DLP的开发板,想知道DLP6500这款板子能否Python编程进行开发,是否有API接口?
    发表于 02-28 06:58

    设备管理系统:如何实现预测性维护与故障预防?

    设备管理系统通过数据收集与分析、智能算法和维护策略制定,实现预测性维护与故障预防。通过建立设备模型,预测设备性能变化趋势。设定预警阈值,确定关键指标。通过数据分析,发现设备潜在故障模式和异常
    的头像 发表于 02-13 09:56 1143次阅读
    设备管理系统:如何实现<b class='flag-5'>预测</b>性维护与故障预防?

    使用Python实现xgboost教程

    使用Python实现XGBoost模型通常涉及以下几个步骤:数据准备、模型训练、模型评估和模型预测。以下是一个详细的教程,指导你如何在Python中使用XGBoost。 1. 安装XGBoost
    的头像 发表于 01-19 11:21 2255次阅读

    基于梯度下降算法的三元锂电池循环寿命预测

    不同比例、范围的训练集与测试集划分。基于机器学习的梯度下降算法对训练集进行模型训练,以迭代后的权重值、偏置值进行结果预测并与试验数据进行对比。结果表明:适宜参数下的梯度下降算法可以应用于锂离子电池循环寿命的
    的头像 发表于 01-16 10:19 793次阅读
    基于梯度下降<b class='flag-5'>算法</b>的三元锂电池循环寿命<b class='flag-5'>预测</b>