广告点击率预测指南

在数字营销领域,了解广告点击率(CTR)对于企业来说至关重要。通过分析CTR数据,企业可以判断广告是否能够吸引目标受众并产生更多的互动。本文将指导如何使用随机森林分类器来预测用户是否会点击广告,以及如何优化广告活动。

目录

  • 步骤1:导入库
  • 步骤2:读取数据
  • 步骤3:点击率分析
  • 步骤4:构建随机森林模型并进行预测
  • 结论

步骤1:导入库

在开始数据分析之前,需要导入一些必要的Python库。这些库包括pandas、numpy、sklearn等,它们将帮助处理数据、划分训练测试集、构建随机森林模型以及评估模型性能。

import pandas as pd import numpy as np from sklearn.model_selection import train_test_split from sklearn.ensemble import RandomForestClassifier from sklearn.metrics import accuracy_score import plotly.graph_objects as go import plotly.express as px import plotly.io as pio pio.templates.default = "plotly_white"

以上代码导入了plotly库,用于数据可视化。还设置了Plotly的默认模板为“plotly_white”,这是一种预定义的浅色或白色背景配色方案。

步骤2:读取数据

数据是任何数据分析任务的基础。在本例中,使用了Gaurav Dutta在Kaggle上上传的数据集,为了方便分析,将其放在了GitHub上。

url = "https://raw.githubusercontent.com/ataislucky/Data-Science/main/dataset/ad_ctr.csv" data = pd.read_csv(url) print(data.head())

数据集中包含了用户在网站上的每日时间、年龄、地区收入、每日互联网使用量、广告主题行、城市、性别、国家和用户访问网站的时间戳等特征,以及用户是否点击了广告的标记。

步骤3:点击率分析

首先,分析用户在网站上的每日时间是否影响CTR。通过绘制箱线图,可以观察到用户在网站上停留时间越长,点击广告的可能性越大。

fig = px.box(data, x="Daily Time Spent on Site", color="Clicked on Ad", title="基于网站停留时间的点击率", color_discrete_map={'Yes':'blue', 'No':'red'}) fig.update_traces(quartilemethod="exclusive") fig.show()

接下来,分析用户的每日互联网使用量是否影响CTR。结果显示,每日互联网使用量较大的用户更倾向于点击广告。

fig = px.box(data, x="Daily Internet Usage", color="Clicked on Ad", title="基于每日互联网使用量的点击率", color_discrete_map={'Yes':'blue', 'No':'red'}) fig.update_traces(quartilemethod="exclusive") fig.show()

还分析了用户年龄对CTR的影响。数据显示,大约40岁的用户点击广告的频率最高。

fig = px.box(data, x="Age", color="Clicked on Ad", title="基于年龄的点击率", color_discrete_map={'Yes':'blue', 'No':'red'}) fig.update_traces(quartilemethod="exclusive") fig.show()

最后,测试了用户收入对点击率的影响。虽然高收入消费者点击广告的可能性较低,但统计上的差异并不显著。

fig = px.box(data, x="Area Income", color="Clicked on Ad", title="基于收入的点击率", color_discrete_map={'Yes':'blue', 'No':'red'}) fig.update_traces(quartilemethod="exclusive") fig.show()

总体点击率(CTR)是通过计算点击广告的用户比例得出的。在本例中,CTR为49.17%。

接下来,将构建一个机器学习模型来预测点击率。首先,需要将数据集划分为训练集和测试集。在模型训练之前,需要将“性别”列的值转换为数字,并将“广告主题行”和“城市”列从数据集中删除,因为它们不是机器学习模型的输入变量。

data["Gender"] = data["Gender"].map({"Male": 1,"Female": 0}) x=data.iloc[:,0:7] x=x.drop(['Ad Topic Line','City'],axis=1) y=data.iloc[:,9] xtrain,xtest,ytrain,ytest=train_test_split(x,y,test_size=0.2,random_state=33)

现在,可以部署随机森林预测分类模型来训练数据。

model = RandomForestClassifier() model.fit(xtrain, ytrain)

接下来,计算模型的准确性。

y_pred = model.predict(xtest) print(accuracy_score(ytest, y_pred)) import warnings warnings.filterwarnings("ignore") print("广告点击率预测:") a = float(input("每日网站停留时间:")) b = float(input("年龄:")) c = float(input("地区收入:")) d = float(input("每日互联网使用量:")) e = input("性别(男=1,女=0):") features = np.array([[a, b, c, d, e]]) print("用户是否会点击广告 = ", model.predict(features))
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485