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

news2024/11/15 4:17:34

数据入口:数字营销转化数据集 - 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 pd

file_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 metrics

new_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.coloradmin.cn/o/2155622.html

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

相关文章

JavaEE: 创造无限连接——网络编程中的套接字

文章目录 Socket套接字TCP和UDP的区别有连接/无连接可靠传输/不可靠传输面向字节流/面向数据报全双工/半双工 UDP/TCP api的使用UDPDatagramSocketDatagramPacketInetSocketAddress练习 TCPServerSocketSocket练习 Socket套接字 Socket是计算机网络中的一种通信机制&#xff0…

Clion使用vcpkg管理C/C++包

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、Clion安装vcpkg二、使用步骤1.切换到清单模式2.开始安装包 三、测试代码总结 前言 Linux上的库基本都可以通过apt或yum等包管理工具来在线安装包&#xff…

cgroup基本原理与使用

Linux cgroups是Linux内核中的一项强大功能,允许用户对进程进行**资源限制、优先级控制、监控和隔离。它主要用于管理和控制计算资源的分配,特别是在容器技术(如 Docker 和 LXC)中得到了广泛应用。 1. Cgroups的基本概念和原理 …

Qwen-2.5 + ClaudeDev + Aider:这套免费的AI编程工具链,简直太棒了!

Qwen-2.5 ClaudeDev Aider:这套免费的AI编程工具链,简直太棒了! 原创 Aitrainee AI进修生 🍹 Insight Daily 🪺 Aitrainee | 公众号:AI进修生 Hi,这里是Aitrainee,欢迎阅读本…

AI字幕翻译器行业分析:前五大厂商占有大约29.5%的市场份额

AI 字幕翻译器正在彻底改变我们使用不同语言消费媒体的方式,使内容可以普遍访问。这些先进的技术利用机器学习和自然语言处理,将口语对话实时翻译成字幕。这一功能不仅打破了语言障碍,提升了观众的体验,而且还使内容创作者能够毫不…

比 Kimi 更强!用 Claude 仿写头条文章,轻松过原创(附完整指令)

最近,我有个做头条号的朋友跟我吐槽,说每天都要更新内容,经常写文章写到半夜,他已经快撑不住了。我听完实在有点不忍心,就告诉他,其实可以用 AI 来帮忙写头条文章。 朋友一脸怀疑,说“怎么可能&…

消灭病毒gamedemo

DestoryVirus 一、AudioSourceManager using System.Collections; using System.Collections.Generic; using UnityEngine;public class AudioSourceManager : MonoBehaviour {public static AudioSourceManager Instance { get; private set; }public SoundPlayer soundPla…

【C++】智能指针模拟实现及详解

目录 什么是智能指针: 为什么要有智能指针: auto_ptr: unique_ptr: shared_ptr: shared_ptr的缺陷: weak_ptr: 什么是智能指针: 概念: 智能指针是一种特殊的类模板,用于自动…

Java律师法律咨询小程序

技术:Java、Springboot、mybatis、Vue、Mysql、微信小程序 1.代码干净整洁,可以快速二次开发和添加新功能 2.亮点可以添加AI法律咨询作为 创新点 系统分:用户小程序端,律师web端和管理员端 用户可以在小程序端登录系统进入首…

机器学习之非监督学习(二)异常检测(基于高斯概率密度)

机器学习之非监督学习(二)异常检测(基于高斯概率密度) 0. 文章传送1.案例引入2.高斯正态分布3.异常检测算法4.异常检测 vs 监督学习5.算法优化 0. 文章传送 机器学习之监督学习(一)线性回归、多项式回归、…

VMware安装CentOS7及其初始化配置教程

安装准备 VMware Workstation Pro 17:下载及安装教程 CentOS 7下载地址:centos-7.9.2009-isos-x86_64安装包下载_开源镜像站-阿里云 创建虚拟机 安装CentOS7 鼠标点一下屏幕中间,就可以进入虚拟机,按向上箭头选择安装&#xff0…

EECS498 Deep Learning for Computer Vision (一)软件使用指南

#最近开始学习深度学习的相关基础知识,记录一下相关笔记及学习成果# learning:building artificial systems that learn from data and experience deep learning(a set of machine learning): hierarchical learning algorithms with many "laye…

【基础算法总结】模拟篇

目录 一,算法介绍二,算法原理和代码实现1576.替换所有的问号495.提莫攻击6.Z字形变换38.外观数列1419.数青蛙 三,算法总结 一,算法介绍 模拟算法本质就是"依葫芦画瓢",就是在题目中已经告诉了我们该如何操作…

helm安装promethues

1、添加 Helm 仓库: helm repo add prometheus-community https://prometheus-community.github.io/helm-charts helm repo update 2、安装 Prometheus:安装promtheus到monitor名称空间中 kubectl create ns monitor helm search repo prometheus #查…

【WSL迁移】将WSL2迁移到D盘

首先查看WSL状态:wsl -l -v 以压缩包的形式导出到其他盘。 wsl --export Ubuntu D:\Ubuntu_WSL\ubuntu.tar 注销原有的linux系统 wsl --unregister Ubuntu 导入系统到D盘 wsl --import Ubuntu D:\Ubuntu_WSL D:\Ubuntu_WSL\Ubuntu.tar 恢复默认用户 Ubuntu co…

Python编码系列—Python策略模式:灵活应对变化的算法策略

🌟🌟 欢迎来到我的技术小筑,一个专为技术探索者打造的交流空间。在这里,我们不仅分享代码的智慧,还探讨技术的深度与广度。无论您是资深开发者还是技术新手,这里都有一片属于您的天空。让我们在知识的海洋中…

后端-navicat查找语句(单表与多表)

表格字段设置如图 语句&#xff1a; 1.输出 1.输出name和age列 SELECT name,age from student 1.2.全部输出 select * from student 2.where子语句 1.运算符&#xff1a; 等于 >大于 >大于等于 <小于 <小于等于 ! <>不等于 select * from stude…

大学生必看!60万人在用的GPT4o大学数学智能体有多牛

❤️作者主页&#xff1a;小虚竹 ❤️作者简介&#xff1a;大家好,我是小虚竹。2022年度博客之星&#x1f3c6;&#xff0c;Java领域优质创作者&#x1f3c6;&#xff0c;CSDN博客专家&#x1f3c6;&#xff0c;华为云享专家&#x1f3c6;&#xff0c;掘金年度人气作者&#x1…

Spring框架总体结构

1. Spring是什么 Spring 是一个开源框架 Spring 为简化企业级应用开发而生&#xff0c;使用 Spring 可以使简单的 JavaBean实现以前只有 EJB 才能实现的功能 Spring 是一个 IOC(DI) 和 AOP 容器框架 具体描述 Spring 轻量级&#xff1a;Spring 是非侵入性的 - 基于 Spring 开发…

【24华为杯数模研赛赛题思路已出】国赛B题思路丨附参考代码丨免费分享

2024年华为杯研赛B题解题思路 B题 WLAN组网中网络吞吐量建模 问题1 请根据附件WLAN网络实测训练集中所提供的网络拓扑、业务流量、门限、节点间RSSI的测试基本信息&#xff0c;分析其中各参数对AP发送机会的影响&#xff0c;并给出影响性强弱的顺序。通过训练的模型&#xff…