热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Python实战:利用Uplift模型识别营销敏感用户提升转化率(一)

点击上方蓝字关注我们利用Uplift模型识别营销敏感用户提升转化率上篇1.数据基本情况探索2.数据预处理及相关性分析3.样本平衡性验证下篇1.构建营销增益模型2.营销增益模型效果评

点击上方蓝字关注我们

 利用Uplift模型识别营销敏感用户提升转化率      

                    

                        上篇                              

    1.数据基本情况探索      

             2.数据预处理及相关性分析     

  3.样本平衡性验证        

             

下篇

1.构建营销增益模型

       2.营销增益模型效果评价

营销增益模型(Uplift)是用户转化分析中常用的模型,今天的文章基于营销数据利用Python进行实战识别营销敏感客户群体,以在实际营销活动中降低企业成本。

1

数据基本情况探索 

营销数据集来源于Kaggle,该数据集收集了64000名客户在不同营销推广活动中的数据。营销活动包括两大类别,分别是“打折”活动以及“买一送一”活动,在数据集中对应的字段分别是“used_discount”和“used_bogo”,数据集记录了两类活动是否触达客户(“offer”字段)以及客户是否转化(“conversion”)等信息。

首先,通过如下代码,导入分析所需的包,读入相关数据并且查看数据集前五行数据。

import pandas as pd
import numpy as np
importmatplotlib.pyplot as plt
import seaborn as sns
data=pd.read_csv('data.csv')
data.head()recency history used_discount used_bogo zip_code is_referral channel offer conversion
10 142.44 1 0 Surburban 0 Phone Buy One Get One 0
6 329.08 1 1 Rural 1 Web No Offer 0
7 180.65 0 1 Surburban 1 Web Buy One Get One 0
9 675.83 1 0 Rural 1 Web Discount 0

 

在正式建立模型之前,对于数据基本情况的探索是必不可少的。通过如下代码查看各个字段是否存在空值及其字段类型。

data.info()

RangeIndex:64000 entries, 0 to 63999
Datacolumns (total 9 columns):# Column Non-Null Count Dtype
--- ------ -------------- ----- 0 recency 64000non-null int64 1 history 64000non-null float642 used_discount 64000non-null int64 3 used_bogo 64000non-null int64 4 zip_code 64000non-null object5 is_referral 64000non-null int64 6 channel 64000non-null object7 offer 64000non-null object8 conversion 64000non-null int64
dtypes:float64(1), int64(5), object(3)
memoryusage: 4.4+ MB

对于分类型变量,数据分析师需要通过如下代码查看有多少种分类类型以及其类型所代表的意义。结果显示,用户购买渠道包括手机、网页以及其他多类渠道,营销方式包括打折、买一送一以及无营销活动。

data.describe(include='object').Tcount unique top freq
zip_code 64000 3 Surburban 28776
channel 64000 3 Web 28217
offer 64000 3 Buy One Get One 21387forcolumn in data.drop(['recency','history'], axis=1).columns:
print(column,'-',data[column].unique())used_discount - [1 0]
used_bogo - [0 1]
zip_code - ['Surburban' 'Rural' 'Urban']
is_referral - [0 1]
channel - ['Phone' 'Web' 'Multichannel']
offer - ['Buy One Get One' 'No Offer' 'Discount']
conversion - [0 1]

 

2

数据预处理及相关性分析 

通过第一部分的分析,我们知道数据质量良好,不存在缺失数据。为了是数据符合营销增益模型的输入形式,此处需要对数据进行适当的预处理。

数据集中营销方式有三类,但其都是文本格式,不利于模型的分类,所以此处需要转换分类标识以方便输入模型,实现代码如下。

 

df_model= data.rename(columns={'conversion': 'target'})
df_model= df_model.rename(columns={'offer': 'treatment'})
df_model.treatment= df_model.treatment.map({'No Offer': 0, 'Buy One Get One': -1, 'Discount': 1})

 

完成分类标识转换之后,我们对数据相关性进行探索,初步了解营销用户转化的因素,实现代码如下。

df_model= pd.get_dummies(df_model)
fig =plt.figure(figsize=(15,12),dpi= 300)
ax =sns.heatmap(df_model.corr(), cmap="YlGnBu",linecolor='black', lw=.65,annot=True,alpha=.95)
ax.set_xticklabels([xfor x in df_model.columns])
ax.set_yticklabels([yfor y in df_model.columns])
plt.show()


图1数据相关性探索

数据相关性结果如图1所示,无论是“买一送一”还是“打折促销”营销方式,都与用户转化相关性较弱。



推荐阅读
  • IjustinheritedsomewebpageswhichusesMooTools.IneverusedMooTools.NowIneedtoaddsomef ... [详细]
  • ESXi命令行获取帮助的方法为,常用的命令一般都是以esxcli开头,如果忘记命令可以使用帮助:esxcli-- ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • C++中的三角函数计算及其应用
    本文介绍了C++中的三角函数的计算方法和应用,包括计算余弦、正弦、正切值以及反三角函数求对应的弧度制角度的示例代码。代码中使用了C++的数学库和命名空间,通过赋值和输出语句实现了三角函数的计算和结果显示。通过学习本文,读者可以了解到C++中三角函数的基本用法和应用场景。 ... [详细]
  • 本文介绍了一个题目的解法,通过二分答案来解决问题,但困难在于如何进行检查。文章提供了一种逃逸方式,通过移动最慢的宿管来锁门时跑到更居中的位置,从而使所有合格的寝室都居中。文章还提到可以分开判断两边的情况,并使用前缀和的方式来求出在任意时刻能够到达宿管即将锁门的寝室的人数。最后,文章提到可以改成O(n)的直接枚举来解决问题。 ... [详细]
  • 3.223.28周学习总结中的贪心作业收获及困惑
    本文是对3.223.28周学习总结中的贪心作业进行总结,作者在解题过程中参考了他人的代码,但前提是要先理解题目并有解题思路。作者分享了自己在贪心作业中的收获,同时提到了一道让他困惑的题目,即input details部分引发的疑惑。 ... [详细]
  • svnWebUI:一款现代化的svn服务端管理软件
    svnWebUI是一款图形化管理服务端Subversion的配置工具,适用于非程序员使用。它解决了svn用户和权限配置繁琐且不便的问题,提供了现代化的web界面,让svn服务端管理变得轻松。演示地址:http://svn.nginxwebui.cn:6060。 ... [详细]
  • 本文总结了使用不同方式生成 Dataframe 的方法,包括通过CSV文件、Excel文件、python dictionary、List of tuples和List of dictionary。同时介绍了一些注意事项,如使用绝对路径引入文件和安装xlrd包来读取Excel文件。 ... [详细]
  • AI行业的下一个风口是医疗?创业者们这样说
    ▼点击上方蓝字关注网易智能为你解读AI领域大公司大事件,新观点新应用编者按:4月10日,鲸准AI产业价值峰会在北京举行。本次大会除了邀请A ... [详细]
  • Allegro总结:1.防焊层(SolderMask):又称绿油层,PCB非布线层,用于制成丝网印板,将不需要焊接的地方涂上防焊剂.在防焊层上预留的焊盘大小要比实际的焊盘大一些,其差值一般 ... [详细]
  • Flink使用java实现读取csv文件简单实例首先我们来看官方文档中给出的几种方法:首先我们来看官方文档中给出的几种方法:第一种:Da ... [详细]
  • Ihavethisfollowinginputfile:我有以下输入文件:test.csvdone_cfg,,,,port<0>,clk_in,subcktA,ins ... [详细]
  • csv转为矩阵 python_Python可视化 | Seaborn5分钟入门(六)——heatmap热力图
    Seaborn是基于matplotlib的Python可视化库。它提供了一个高级界面来绘制有吸引力的统计图形。Seaborn其实是在matplotlib的基础上进行了更高级的API ... [详细]
author-avatar
mobiledu2502931997
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有