使用Python實(shí)現(xiàn)廣告點(diǎn)擊率預(yù)測
廣告點(diǎn)擊率是指有多少用戶點(diǎn)擊了您的廣告與有多少用戶查看了您的廣告的比率。例如,100個用戶中有5個在觀看XX視頻時點(diǎn)擊了廣告。因此,在這種情況下,XX廣告的CTR將是5%。分析點(diǎn)擊率有助于公司為目標(biāo)受眾找到最佳廣告。所以,如果你想學(xué)習(xí)如何用機(jī)器學(xué)習(xí)分析和預(yù)測廣告點(diǎn)擊率,這篇文章是為你準(zhǔn)備的。本文將帶您了解使用Python進(jìn)行機(jī)器學(xué)習(xí)的廣告點(diǎn)擊率預(yù)測。
廣告點(diǎn)擊率預(yù)測
廣告點(diǎn)擊率預(yù)測是指預(yù)測用戶是否會點(diǎn)擊廣告。在廣告點(diǎn)擊率預(yù)測的任務(wù)中,我們需要訓(xùn)練一個機(jī)器學(xué)習(xí)模型來找到所有點(diǎn)擊廣告的用戶特征之間的關(guān)系。
導(dǎo)入必要的Python庫和數(shù)據(jù)集來開始任務(wù):
import pandas as pd import plotly.graph_objects as go import plotly.express as px import plotly.io as pio import numpy as np pio.templates.default = "plotly_white" data = pd.read_csv("ad_10000records.csv") print(data.head())
輸出
Daily Time Spent on Site Age Area Income Daily Internet Usage \
0 62.26 32.0 69481.85 172.83
1 41.73 31.0 61840.26 207.17
2 44.40 30.0 57877.15 172.83
3 59.88 28.0 56180.93 207.17
4 49.21 30.0 54324.73 201.58
Ad Topic Line City Gender \
0 Decentralized real-time circuit Lisafort Male
1 Optional full-range projection West Angelabury Male
2 Total 5thgeneration standardization Reyesfurt Female
3 Balanced empowering success New Michael Female
4 Total 5thgeneration standardization West Richard Female
Country Timestamp Clicked on Ad
0 Svalbard & Jan Mayen Islands 2016-06-09 21:43:05 0
1 Singapore 2016-01-16 17:56:05 0
2 Guadeloupe 2016-06-29 10:50:45 0
3 Zambia 2016-06-21 14:32:32 0
4 Qatar 2016-07-21 10:54:35 1
“廣告點(diǎn)擊”列包含0和1值,其中0表示未點(diǎn)擊,1表示點(diǎn)擊。將這些值轉(zhuǎn)換為“yes”和“no”:
data["Clicked on Ad"] = data["Clicked on Ad"].map({0: "No", 1: "Yes"})
點(diǎn)擊率分析
現(xiàn)在讓我們根據(jù)用戶在網(wǎng)站上花費(fèi)的時間來分析點(diǎn)擊率:
fig = px.box(data, x="Daily Time Spent on Site", color="Clicked on Ad", title="Click Through Rate based Time Spent on Site", color_discrete_map={'Yes':'blue', 'No':'red'}) fig.update_traces(quartilemethod="exclusive") fig.show()
從上面的圖表中,我們可以看到,在網(wǎng)站上花費(fèi)更多時間的用戶點(diǎn)擊更多的廣告。現(xiàn)在我們根據(jù)用戶的日?;ヂ?lián)網(wǎng)使用情況來分析一下點(diǎn)擊率:
fig = px.box(data, x="Daily Internet Usage", color="Clicked on Ad", title="Click Through Rate based on Daily Internet Usage", color_discrete_map={'Yes':'blue', 'No':'red'}) fig.update_traces(quartilemethod="exclusive") fig.show()
從上圖中,我們可以看到,與互聯(lián)網(wǎng)使用率較低的用戶相比,互聯(lián)網(wǎng)使用率較高的用戶點(diǎn)擊廣告較少?,F(xiàn)在我們根據(jù)用戶的年齡來分析一下點(diǎn)擊率:
fig = px.box(data, x="Age", color="Clicked on Ad", title="Click Through Rate based on Age", color_discrete_map={'Yes':'blue', 'No':'red'}) fig.update_traces(quartilemethod="exclusive") fig.show()
從上圖中我們可以看到,40歲左右的用戶比27-36歲左右的用戶點(diǎn)擊廣告更多。現(xiàn)在我們根據(jù)用戶的收入來分析一下點(diǎn)擊率:
fig = px.box(data, x="Area Income", color="Clicked on Ad", title="Click Through Rate based on Income", color_discrete_map={'Yes':'blue', 'No':'red'}) fig.update_traces(quartilemethod="exclusive") fig.show()
沒有太大的差別,但來自高收入地區(qū)的人點(diǎn)擊廣告的次數(shù)更少。
計算廣告的點(diǎn)擊率
現(xiàn)在讓我們來計算整體廣告點(diǎn)擊率。在這里,我們需要計算點(diǎn)擊廣告的用戶與對廣告留下印象的用戶的比例。讓我們來看看用戶的分布:
data["Clicked on Ad"].value_counts()
輸出
No 5083
Yes 4917
Name: Clicked on Ad, dtype: int64
因此,10000名用戶中有4917人點(diǎn)擊了廣告。讓我們計算CTR:
click_through_rate = 4917 / 10000 * 100 print(click_through_rate)
輸出
49.17
所以CTR是49.17。
點(diǎn)擊率預(yù)測模型
現(xiàn)在讓我們繼續(xù)訓(xùn)練機(jī)器學(xué)習(xí)模型來預(yù)測點(diǎn)擊率。首先,將把數(shù)據(jù)分成訓(xùn)練集和測試集:
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] from sklearn.model_selection import train_test_split xtrain,xtest,ytrain,ytest=train_test_split(x,y, test_size=0.2, random_state=4)
現(xiàn)在讓我們使用隨機(jī)森林分類算法來訓(xùn)練模型:
from sklearn.ensemble import RandomForestClassifier model = RandomForestClassifier() model.fit(x, y)
現(xiàn)在讓我們來看看模型的準(zhǔn)確性:
from sklearn.metrics import accuracy_score print(accuracy_score(ytest,y_pred))
輸出
0.9615
現(xiàn)在讓我們通過預(yù)測來測試模型:
print("Ads Click Through Rate Prediction : ") a = float(input("Daily Time Spent on Site: ")) b = float(input("Age: ")) c = float(input("Area Income: ")) d = float(input("Daily Internet Usage: ")) e = input("Gender (Male = 1, Female = 0) : ") features = np.array([[a, b, c, d, e]]) print("Will the user click on ad = ", model.predict(features))
輸出
Ads Click Through Rate Prediction :
Daily Time Spent on Site: 62.26
Age: 28
Area Income: 61840.26
Daily Internet Usage: 207.17
Gender (Male = 1, Female = 0) : 0
Will the user click on ad = ['No']
總結(jié)
這就是如何使用機(jī)器學(xué)習(xí)來完成使用Python進(jìn)行廣告點(diǎn)擊率預(yù)測的任務(wù)。廣告點(diǎn)擊率意味著預(yù)測用戶是否會點(diǎn)擊廣告。在這個任務(wù)中,我們需要訓(xùn)練一個機(jī)器學(xué)習(xí)模型,以找到所有點(diǎn)擊廣告的用戶特征之間的關(guān)系。
到此這篇關(guān)于使用Python實(shí)現(xiàn)廣告點(diǎn)擊率預(yù)測的文章就介紹到這了,更多相關(guān)Python廣告點(diǎn)擊率預(yù)測內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python Django編寫接口并用Jmeter測試的方法
這篇文章主要介紹了python Django編寫接口并用Jmeter測試,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07使用Python通過代碼創(chuàng)建圖表的詳細(xì)步驟
這篇文章主要介紹了使用Python通過代碼創(chuàng)建圖表的詳細(xì)步驟,文中介紹了如何使用DiagramasCode工具創(chuàng)建基礎(chǔ)架構(gòu)的架構(gòu)圖,并通過Python腳本生成并上傳到對象存儲桶,需要的朋友可以參考下2024-12-12Python爬蟲實(shí)現(xiàn)Cookie模擬登錄
這篇文章主要介紹了Python爬蟲實(shí)現(xiàn)Cookie模擬登錄,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11python3獲取當(dāng)前目錄的實(shí)現(xiàn)方法
這篇文章主要介紹了python3獲取當(dāng)前目錄的實(shí)現(xiàn)方法,文中給大家提到了python3獲取當(dāng)前目錄和上級目錄的方法,需要的朋友可以參考下2019-07-07