Team I.A. Italia

4 min

Prevedere il traffico di un sito web utilizzando Python

Le previsioni possono offrire un grande valore in SEO. Prevedere il traffico su un sito Web durante un determinato periodo è uno dei migliori casi d'uso della previsione di serie temporali. Se vuoi imparare a prevedere il traffico su un sito web, questo articolo è per te. In questo articolo, ti guiderò attraverso l'attività di previsione del traffico del sito Web utilizzando Python.

Prevedere il traffico di un sito web utilizzando Python

Allora perché prevedere il traffico di un sito web utilizzando Python?

Per rispondere a una domanda con una domanda, perché non dovresti farlo?

Queste tecniche sono state a lungo utilizzate nella finanza per i prezzi delle azioni, ad esempio, e in altri campi. Perché la SEO dovrebbe essere diversa?

Il traffico web è fondamentalmente il numero di sessioni in un dato intervallo di tempo, e varia molto rispetto a che ora del giorno è, che giorno della settimana è e così via, e quanto traffico web della piattaforma può resistere dipende dalle dimensioni dei server che supportano la piattaforma.

Se il traffico è superiore a quello che i server possono gestire, il sito Web potrebbe mostrare questo errore 404, che è qualcosa che non vogliamo che accada. Farà andare via i visitatori.

Previsione del traffico del sito Web utilizzando Python

Il set di dati che sto utilizzando per la previsione del traffico del sito Web viene raccolto dai dati sul traffico giornaliero di intelligenzaartificialeitalia.net .

Ricorda che puoi semplicemente scaricare i dati del tuo sito web andando su :

https://search.google.com/search-console?hl=IT

e cliccare in alto a destra su "ESPORTA":

Prevedere il traffico di un sito web utilizzando Python

una volta fatto ciò vi troverete una cartella .zip contenente i seguenti file :

Prevedere il traffico di un sito web utilizzando Python

A noi interesserà solo Date.csv

Ora iniziamo con l'attività di previsione del traffico del sito Web importando le librerie Python necessarie e il set di dati:

import pandas as pd
 
import matplotlib.pyplot as plt
 
import plotly.express as px
 
import plotly.graph_objects as go
 
from statsmodels.tsa.seasonal import seasonal_decompose
 
from statsmodels.graphics.tsaplots import plot_pacf
 
from statsmodels.tsa.arima_model import ARIMA
 
import statsmodels.api as sm
 

 
data = pd.read_csv("Date.csv")
 
print(data.head())
 

Output :
 

 
Data Clic
 
0 2022-10-08 ****
 
1 2022-10-07 *****
 
2 2022-10-06 *****
 
3 2022-10-05 *****
 
4 2022-10-04 *****

Il set di dati contiene due colonne, data e traffico. Prima di andare avanti, convertirò la colonna Date nel tipo di dati Datetime:

data["Data"] = pd.to_datetime(data["Data"],
 
format="%Y-%m-%d")
 
print(data.info())


 
Output :
 

 
<class 'pandas.core.frame.DataFrame'> RangeIndex: 486 entries, 0 to 485 Data columns (total 2 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 Data 486 non-null datetime64[ns] 1 Clic 486 non-null object dtypes: datetime64[ns](1), object(1) memory usage: 7.7+ KB None
 

Inizialmente la colonna Datetime era un oggetto, quindi l'ho convertita in una colonna Datetime. Ora diamo un'occhiata al traffico giornaliero del sito web:

plt.style.use('fivethirtyeight')
 
plt.figure(figsize=(15, 10))
 
plt.plot(data["Data"], data["Clic"])
 
plt.title("traffico giornaliero intelligenzaartificialeitalia.net")
 
plt.show()

Output :

Prevedere il traffico di un sito web utilizzando Python

I dati sul traffico del nostro sito Web sono stagionali perché il traffico sul sito Web aumenta durante i giorni feriali e diminuisce durante i fine settimana. È importante sapere se il set di dati è stagionale o meno mentre si lavora sul problema della previsione delle serie temporali. Di seguito è riportato come possiamo dare un'occhiata se il nostro set di dati è stazionario o stagionale:

Prevedere il traffico di un sito web utilizzando Python

Userò il modello stagionale ARIMA (SARIMA) per prevedere il traffico sul sito web. Prima di utilizzare il modello SARIMA, è necessario trovare i valori p, d e q.

Poiché i dati non sono stazionari, il valore di d è 1. Per trovare i valori di p e q, possiamo utilizzare i grafici di autocorrelazione e autocorrelazione parziale:

pd.plotting.autocorrelation_plot(data["Clic"])
 
plot_pacf(data["Clic"], lags = 100)

Output :

Prevedere il traffico di un sito web utilizzando Python
Prevedere il traffico di un sito web utilizzando Python

Ora ecco come possiamo addestrare un modello SARIMA per il compito di previsione del traffico del sito web:

p, d, q = 5, 1, 2
 
model=sm.tsa.statespace.SARIMAX(data['Clic'],
 
order=(p, d, q),
 
seasonal_order=(p, d, q, 12))
 
model=model.fit()
 
print(model.summary())

Output :

SARIMAX Results
 
==========================================================================================
 
Dep. Variable: Clic No. Observations: 486
 
Model: SARIMAX(5, 1, 2)x(5, 1, 2, 16) Log Likelihood -2750.823
 
Date: Mon, 10 Oct 2022 AIC 5531.646
 
Time: 15:59:06 BIC 5593.905
 
Sample: 0 HQIC 5556.143
 
- 486
 
Covariance Type: opg
 
==============================================================================
 
coef std err z P>|z| [0.025 0.975]
 
------------------------------------------------------------------------------
 
ar.L1 0.2189 0.078 2.795 0.005 0.065 0.372
 
ar.L2 -0.6501 0.065 -10.061 0.000 -0.777 -0.523
 
ar.L3 -0.3116 0.077 -4.047 0.000 -0.462 -0.161
 
ar.L4 -0.3608 0.058 -6.238 0.000 -0.474 -0.247
 
ar.L5 -0.4415 0.077 -5.768 0.000 -0.592 -0.292
 
ma.L1 -0.9748 0.073 -13.360 0.000 -1.118 -0.832
 
ma.L2 0.7034 0.066 10.614 0.000 0.574 0.833
 
ar.S.L16 -1.9088 1.075 -1.776 0.076 -4.015 0.198
 
ar.S.L32 -1.8938 1.655 -1.144 0.253 -5.138 1.350
 
ar.S.L48 -1.0791 1.073 -1.005 0.315 -3.183 1.024
 
ar.S.L64 -0.4224 0.562 -0.751 0.452 -1.525 0.680
 
ar.S.L80 -0.0785 0.226 -0.347 0.729 -0.522 0.365
 
ma.S.L16 1.1405 1.076 1.060 0.289 -0.969 3.250
 
ma.S.L32 0.6541 0.888 0.736 0.462 -1.087 2.395
 
sigma2 1.049e+04 936.123 11.206 0.000 8655.763 1.23e+04
 
===================================================================================
 
Ljung-Box (L1) (Q): 0.14 Jarque-Bera (JB): 21.38
 
Prob(Q): 0.71 Prob(JB): 0.00
 
Heteroskedasticity (H): 9.08 Skew: 0.07
 
Prob(H) (two-sided): 0.00 Kurtosis: 4.04
 
===================================================================================
 

 
Warnings:
 
[1] Covariance matrix calculated using the outer product of gradients (complex-step).

Ora prevediamo il traffico sul sito web per i prossimi 50 giorni:

predictions = model.predict(len(data), len(data)+50)
 
print(predictions)


 
Ecco come possiamo vedere graficamente le previsioni:

data["Clic"].plot(legend=True, label="Training Data",
 
figsize=(15, 10))
 
predictions.plot(legend=True, label="Predictions")

Output :

Prevedere il traffico di un sito web utilizzando Python

Riepilogo su come Prevedere il traffico di un sito web utilizzando Python

Quindi è così che puoi prevedere il traffico del sito Web per un determinato periodo. La previsione del traffico del sito Web è una delle migliori idee per progetti di data science che puoi menzionare nel tuo curriculum. Spero che questo articolo ti sia stato utile per imparare la previsione del traffico del sito web usando il linguaggio di programmazione Python. Sentiti libero di porre domande preziose nella sezione commenti qui sotto.