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

数据入口:数字营销转化数据集 - 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.rhkb.cn/news/429370.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

unity3d入门教程九

unity3d入门教程九 20.2播放音频20.3在代码中播放21.1延时调用21.2invoke API21.3消息调用22.1交互界面22.2添加canvas22.3canavas的位置22.4添加text 这里给一个资源网站,可以部分免费下载,音乐和音效超多,支持检索 爱给网 https://www.aige…

Arthas sysenv(查看JVM的环境变量)

文章目录 二、命令列表2.1 jvm相关命令2.1.5 sysenv(查看JVM的环境变量)举例1:sysenv 查看所有环境变量举例2:sysenv java.version 查看单个属性,支持通过tab补全 二、命令列表 2.1 jvm相关命令 2.1.5 sysenv&#x…

2.Seata 1.5.2 集成Springcloud-alibaba

一.Seata-server搭建已完成前提下 详见 Seata-server搭建 二.Springcloud 项目集成Seata 项目整体测试业务逻辑是创建订单后(为了演示分布式事务,不做前置库存校验),再去扣减库存。库存不够的时候,创建的订单信息数…

开源 AI 智能名片 S2B2C 商城小程序与营销工具的快速迭代

摘要:本文以开源 AI 智能名片 S2B2C 商城小程序为研究对象,探讨在营销工具快速迭代的背景下,该小程序如何借鉴以拼多多为代表的“小程序拼团”、以蘑菇街为代表的“小程序直播”、以花点时间为代表的“小程序按月订花”等经典案例&#xff0c…

camtasia2024绿色免费安装包win+mac下载含2024最新激活密钥

Hey, hey, hey!亲爱的各位小伙伴,今天我要给大家带来的是Camtasia2024中文版本,这款软件简直是视频制作爱好者的福音啊! camtasia2024绿色免费安装包winmac下载,点击链接即可保存。 先说说这个版本新加的功能吧&#…

解密.bixi、.baxia勒索病毒:如何安全恢复被加密数据

导言 在数字化时代,数据安全已成为个人和企业面临的重大挑战之一。随着网络攻击手段的不断演进,勒索病毒的出现尤为引人关注。其中,.bixi、.baxia勒索病毒是一种新型的恶意软件,它通过加密用户的重要文件,迫使受害者支…

Linux,uboot,kernel启动流程,S5PV210芯片的启动流程,DRAM控制器初始化流程

一、S5PV210芯片的DRAM控制器介绍、初始化DDR的流程分析 1、DRAM的地址空间 1)从地址映射图可以知道,S5PV210有两个DRAM端口。 DRAM0的内存地址范围:0x20000000~0x3FFFFFFF(512MB);DRAM1:的内存地址范围…

Node.js 学习

目录 1.Node.js入门 1.1 什么是 Node.js 1.2 fs模块-读写文件 1.3 path模块-路径处理 1.4 案例-压缩前端html 1.5 认识URL中的端口号 1.6 http模块-创建Web服务 1.7 案例-浏览时钟 2.Node.js 模块化 2.1 模块化简介 2.1.1 什么是模块化? 2.1.2 CommonJS…

BP神经网络

一、BP神经网络概述 BP神经网络由Rumelhard和McClelland于1986年提出的一种按照误差逆向传播算法训练的多层前馈神经网络。 从结构上讲,BP神经网络是一种典型的多层前向型神经网络,具有一个输入层input、数个隐含层hidden(可以是一层&#xf…

【高级数据结构】树状数组

一、树状数组的介绍 1.思维导引 树状数组 ( B i n a r y I n d e x e d T r e e , B I T ) (Binary Indexed Tree,BIT) (BinaryIndexedTree,BIT)是利用数的二进制特征进行检索的一种树状的结构。 如何利用二分的思想高效地求前缀和? 如图 4.7 4.7 4.7所示, 以 A A A [ a …

C++初阶学习——探索STL奥秘——模拟实现list类

1、基本框架 list 由三个类构建而成: 节点类:每个节点必须的三部分(指向前一个节点的指针、指向后一个节点的指针、当前节点存储的数据) 迭代器类:此时的迭代器为双向迭代器,比较特殊,需要对其进行封装,如 it并非使迭代器单纯向后移动&…

BLE 设备丢包理解

前言 个人邮箱:zhangyixu02gmail.com在学习 BLE 过程中,总能听到 “丢包” 一词,但是我查阅资料又发现,有大佬说,ATT所有命令都是“必达”的,不存在所谓的“丢包”。而且我发现,在宣传 BLE 产品…

【如何在 Windows 10 主机上通过 VMware 安装 Windows 11 虚拟机,并共享主机网络】

环境说明 主机操作系统:Windows 10虚拟机操作系统:Windows 11虚拟机软件:VMware 步骤一:确保主机(Windows 10)网络连接正常 启动网络加速软件:在主机上启动软件,确保主机可以正常访…

分布式锁优化之 防死锁 及 过期时间的原子性保证(优化之设置锁的过期时间)

文章目录 1、AlbumInfoApiController --》testLock()2、AlbumInfoServiceImpl --》testLock()3、问题:可能会释放其他服务器的锁。 在Redis中设置一个名为lock的键,值为111,并且只有在该键不存在时才设置(即获取锁)。同…

Mistral AI 又又又开源了闭源企业级模型——Mistral-Small-Instruct-2409

就在不久前,Mistral 公司在开源了 Pixtral 12B 视觉多模态大模型之后,又开源了自家的企业级小型模型 Mistral-Small-Instruct-2409 (22B),这是 Mistral AI 最新的企业级小型模型,是 Mistral Small v24.02 的…

【路径规划】自动泊车的 Simulink 模型

摘要 本文介绍了一个用于自主机器人路径规划和导航的 Simulink 模型,该模型结合了路径跟踪算法(如 Pure Pursuit)和动态机器人模型,实现了复杂环境中的路径跟随和导航控制。实验结果表明,模型能够在给定路径上精确控制…

QT快速安装使用指南

在Ubuntu 16.04上安装Qt可以通过多种方式进行。以下是使用Qt在线安装程序和apt包管理器的两种常见方法: 方法一:使用Qt在线安装程序 下载Qt在线安装程序 访问Qt官方网站:Try Qt | Develop Applications and Embedded Systems | Qt找到并下载…

初识ZYNQ——FPGA学习笔记15

一、ZYNQ简介 ZYNQ:Zynq-7000 All Programmable SoC(APSoC),赛灵思公司(AMD Xilinx)推出的新一代全可编程片上系统 PS:Processing System,处理系统 PL:Program Logic&…

Linux:路径末尾加/和不加/的区别

相关阅读 Linuxhttps://blog.csdn.net/weixin_45791458/category_12234591.html?spm1001.2014.3001.5482 普通文件操作 首先说明这个问题只会出现在目录和符号链接中,因为如果想要索引普通文件但却在路径末尾加/则会出现错误,如例1所示。 # 例1 zhang…

Zotero(7.0.5)+123云盘同步空间+Z-library=无限存储文献pdf/epub电子书等资料

选择123云盘作为存储介质的原因 原因1: zotero个人免费空间大小:300M,如果zotero云端也保存文献pdf资料则远远不够 原因2: 百度网盘同步文件空间大小:1G123云盘同步文件空间大小:10G 第一台电脑实施步骤…