Creare modelli di machine learning in BigQuery ML

Questo tutorial mostra come creare un modello di regressione logistica utilizzando di BigQuery ML nella console Google Cloud.

BigQuery ML ti consente di creare e addestrare modelli di machine learning in BigQuery usando query SQL. Questo contribuisce a migliorare il machine learning accessibile facendoti usare strumenti familiari come BigQuery editor SQL e aumenta anche la velocità di sviluppo, eliminando la necessità di spostare in un ambiente di machine learning separato.

In questo tutorial viene utilizzato il modello Set di dati di esempio di Google Analytics per BigQuery per creare un modello che prevede se il visitatore di un sito web farà transazione. Per informazioni sullo schema del set di dati di Analytics, consulta: Schema di esportazione BigQuery nel Centro assistenza Analytics.

Obiettivi

Questo tutorial mostra come eseguire le attività seguenti:

Costi

Questo tutorial utilizza componenti fatturabili di Google Cloud, tra cui:

  • BigQuery
  • BigQuery ML

Per ulteriori informazioni sui costi di BigQuery, consulta Prezzi di BigQuery.

Per ulteriori informazioni sui costi di BigQuery ML, consulta Prezzi di BigQuery ML.

Prima di iniziare

  1. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  2. Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.

  3. BigQuery viene abilitato automaticamente nei nuovi progetti. Per attivare BigQuery in un progetto preesistente, vai a

    Attiva l'API BigQuery.

    Abilita l'API

Crea un set di dati

Crea un set di dati BigQuery per archiviare il tuo modello ML:

  1. Nella console Google Cloud, vai alla pagina BigQuery.

    Vai alla pagina di BigQuery

  2. Nel riquadro Explorer, fai clic sul nome del tuo progetto.

  3. Fai clic su Visualizza azioni > Crea il set di dati.

    Crea il set di dati.

  4. Nella pagina Crea set di dati, segui questi passaggi:

    • In ID set di dati, inserisci bqml_tutorial.

    • Per Tipo di località, seleziona Più regioni e poi Stati Uniti (più regioni negli Stati Uniti).

      I set di dati pubblici vengono archiviati nell'US più regioni. Per semplicità, per archiviare il set di dati nella stessa posizione.

    • Lascia invariate le restanti impostazioni predefinite e fai clic su Crea il set di dati.

      Pagina Crea set di dati.

Creare un modello di regressione logistica

Crea un modello di regressione logistica utilizzando l'esempio di Analytics per BigQuery.

SQL

  1. Nella console Google Cloud, vai alla pagina BigQuery.

    Vai a BigQuery

  2. Esegui la seguente istruzione nell'editor query:

    CREATE OR REPLACE MODEL `bqml_tutorial.sample_model`
    OPTIONS(model_type='logistic_reg') AS
    SELECT
    IF(totals.transactions IS NULL, 0, 1) AS label,
    IFNULL(device.operatingSystem, "") AS os,
    device.isMobile AS is_mobile,
    IFNULL(geoNetwork.country, "") AS country,
    IFNULL(totals.pageviews, 0) AS pageviews
    FROM
    `bigquery-public-data.google_analytics_sample.ga_sessions_*`
    WHERE
    _TABLE_SUFFIX BETWEEN '20160801' AND '20170630'
    

    Il completamento della query richiede diversi minuti. Dopo la prima iterazione, completata, il tuo modello (sample_model) viene visualizzato nel pannello di navigazione. Poiché la query utilizza un'istruzione CREATE MODEL per creare un modello, non devi per vedere i risultati della query.

Dettagli query

L'istruzione CREATE MODEL crea il modello, quindi lo addestra utilizzando i dati recuperati dall'istruzione SELECT della query.

La clausola OPTIONS(model_type='logistic_reg') crea una classe logistica di regressione lineare. R il modello di regressione logistica suddivide i dati di input in due classi, stima la probabilità che i dati siano in una delle classi. Che cosa sei per tentare di rilevare, ad esempio se un'email è spam, è rappresentato da 1 e gli altri valori sono rappresentati da 0. La probabilità che un determinato valore appartenga alla classe che stai cercando di rilevare è indicata da un valore compreso tra 0 e 1. Ad esempio, se un'email riceve una stima di probabilità pari a 0,9, una probabilità del 90% che l'email sia spam.

L'istruzione SELECT di questa query recupera le seguenti colonne utilizzate dal modello per prevedere la probabilità che un cliente completi transazione:

  • totals.transactions: il numero totale di transazioni e-commerce durante la sessione. Se il numero di transazioni è NULL, il valore nel La colonna label è impostata su 0. In caso contrario, viene impostato su 1. Questi valori i risultati possibili. La creazione di un alias denominato label è alternativa all'impostazione dell'opzione input_label_cols= in CREATE MODEL l'Informativa.
  • device.operatingSystem: il sistema operativo del dispositivo del visitatore.
  • device.isMobile: indica se il dispositivo del visitatore è un dispositivo mobile dispositivo.
  • geoNetwork.country: il paese da cui hanno avuto origine le sessioni, in base all'indirizzo IP.
  • totals.pageviews: il numero totale di visualizzazioni di pagina nella sessione.

La clausola FROM: fa sì che la query addestra il modello utilizzando la proprietà bigquery-public-data.google_analytics_sample.ga_sessions tabelle di esempio. Queste tabelle sono suddivise per data, pertanto le aggreghi utilizzando un carattere jolly il nome della tabella: google_analytics_sample.ga_sessions_*.

Clausola WHERE - _TABLE_SUFFIX BETWEEN '20160801' AND '20170630' : limita il numero di tabelle analizzate dalla query. L'intervallo di date scansionati è l'1 agosto 2016 e il 30 giugno 2017.

DataFrame BigQuery

Prima di provare questo esempio, segui i DataFrame di BigQuery nella guida rapida di BigQuery utilizzando BigQuery DataFrames. Per ulteriori informazioni, consulta Documentazione di riferimento di BigQuery DataFrames.

Per eseguire l'autenticazione su BigQuery, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Impostare l'autenticazione per un ambiente di sviluppo locale.

from bigframes.ml.linear_model import LogisticRegression
import bigframes.pandas as bpd

# Start by selecting the data you'll use for training. `read_gbq` accepts
# either a SQL query or a table ID. Since this example selects from multiple
# tables via a wildcard, use SQL to define this data. Watch issue
# https://github.com/googleapis/python-bigquery-dataframes/issues/169
# for updates to `read_gbq` to support wildcard tables.

df = bpd.read_gbq_table(
    "bigquery-public-data.google_analytics_sample.ga_sessions_*",
    filters=[
        ("_table_suffix", ">=", "20160801"),
        ("_table_suffix", "<=", "20170630"),
    ],
)

# Extract the total number of transactions within
# the Google Analytics session.
#
# Because the totals column is a STRUCT data type, call
# Series.struct.field("transactions") to extract the transactions field.
# See the reference documentation below:
# https://cloud.google.com/python/docs/reference/bigframes/latest/bigframes.operations.structs.StructAccessor#bigframes_operations_structs_StructAccessor_field
transactions = df["totals"].struct.field("transactions")

# The "label" values represent the outcome of the model's
# prediction. In this case, the model predicts if there are any
# ecommerce transactions within the Google Analytics session.
# If the number of transactions is NULL, the value in the label
# column is set to 0. Otherwise, it is set to 1.
label = transactions.notnull().map({True: 1, False: 0}).rename("label")

# Extract the operating system of the visitor's device.
operating_system = df["device"].struct.field("operatingSystem")
operating_system = operating_system.fillna("")

# Extract whether the visitor's device is a mobile device.
is_mobile = df["device"].struct.field("isMobile")

# Extract the country from which the sessions originated, based on the IP address.
country = df["geoNetwork"].struct.field("country").fillna("")

# Extract the total number of page views within the session.
pageviews = df["totals"].struct.field("pageviews").fillna(0)

# Combine all the feature columns into a single DataFrame
# to use as training data.
features = bpd.DataFrame(
    {
        "os": operating_system,
        "is_mobile": is_mobile,
        "country": country,
        "pageviews": pageviews,
    }
)

# Logistic Regression model splits data into two classes, giving the
# a confidence score that the data is in one of the classes.
model = LogisticRegression()
model.fit(features, label)

# The model.fit() call above created a temporary model.
# Use the to_gbq() method to write to a permanent location.
model.to_gbq(
    your_model_id,  # For example: "bqml_tutorial.sample_model",
    replace=True,
)

Visualizzare le statistiche di perdita del modello

Il machine learning consiste nel creare un modello che può utilizzare i dati per creare la previsione. Il modello è essenzialmente una funzione che prende input e applica agli input per produrre un output: una previsione.

Gli algoritmi di machine learning funzionano sulla base di diversi esempi in cui è già nota (come i dati storici degli acquisti degli utenti) e regolando iterativamente le varie ponderazioni del modello in modo che le previsioni corrispondano ai valori veri. Per farlo, riduce al minimo l'errore utilizza una metrica chiamata perdita.

L'aspettativa è che per ogni iterazione la perdita debba diminuire, idealmente a zero. Una perdita pari a zero indica che il modello è preciso al 100%.

Durante l'addestramento del modello, BigQuery ML suddivide automaticamente di inserire i dati set di addestramento e valutazione, per evitare l'overfitting del modello. Ciò è necessario per impedire all'algoritmo di addestramento di ai dati di addestramento da non poter generalizzare con nuovi esempi.

Utilizza la console Google Cloud per vedere come cambia la perdita del modello delle iterazioni di addestramento del modello:

  1. Nella console Google Cloud, vai alla pagina BigQuery.

    Vai a BigQuery

  2. Nel riquadro Explorer, espandi bqml_tutorial &gt; Models e quindi fai clic su sample_model.

  3. Fai clic sulla scheda Addestramento e osserva il grafico Perdita. La perdita la variazione della metrica della perdita rispetto alle iterazioni set di dati di addestramento. Se passi il cursore sul grafico, puoi vedere che sono presenti righe per Perdita di addestramento e Perdita di valutazione. Dato che una regressione logistica, il valore della perdita di addestramento viene calcolato perdita di log, utilizzando i dati di addestramento. La perdita di valutazione è la perdita log calcolata sulla di valutazione. Entrambi i tipi di perdita rappresentano i valori medi della perdita, su tutti gli esempi nei rispettivi set di dati per ogni iterazione.

Puoi anche vedere i risultati dell'addestramento del modello utilizzando Funzione ML.TRAINING_INFO.

Valuta il modello

Valutare le prestazioni del modello utilizzando la funzione ML.EVALUATE. La La funzione ML.EVALUATE valuta i valori previsti generati dal modello rispetto ai dati effettivi. Per calcolare la regressione logistica specifica puoi utilizzare le metriche ML.ROC_CURVE Funzione SQL o il bigframes.ml.metrics.roc_curve Funzione DataFrames di BigQuery.

In questo tutorial, utilizzerai un modello di classificazione binaria rileva le transazioni. I valori nella colonna label corrispondono alle due classi generati dal modello: 0 (nessuna transazione) e 1 (transazione effettuata).

SQL

  1. Nella console Google Cloud, vai alla pagina BigQuery.

    Vai a BigQuery

  2. Esegui la seguente istruzione nell'editor query:

    SELECT
    *
    FROM
    ML.EVALUATE(MODEL `bqml_tutorial.sample_model`, (
    SELECT
    IF(totals.transactions IS NULL, 0, 1) AS label,
    IFNULL(device.operatingSystem, "") AS os,
    device.isMobile AS is_mobile,
    IFNULL(geoNetwork.country, "") AS country,
    IFNULL(totals.pageviews, 0) AS pageviews
    FROM
    `bigquery-public-data.google_analytics_sample.ga_sessions_*`
    WHERE
    _TABLE_SUFFIX BETWEEN '20170701' AND '20170801'))
    

    I risultati dovrebbero essere simili ai seguenti:

      +--------------------+---------------------+---------------------+---------------------+---------------------+--------------------+
      |     precision      |       recall        |      accuracy       |      f1_score       |      log_loss       | roc_auc                   |
      +--------------------+---------------------+---------------------+---------------------+---------------------+--------------------+
      | 0.468503937007874  | 0.11080074487895716 | 0.98534315834767638 | 0.17921686746987953 | 0.04624221101176898    | 0.98174125874125873 |
      +--------------------+---------------------+---------------------+---------------------+---------------------+--------------------+
      

    Poiché hai eseguito una regressione logistica, i risultati includono quanto segue. colonne:

    • precision: una metrica per i modelli di classificazione. La precisione identifica la frequenza con cui un modello era corretto nel prevedere la classe positiva.

    • recall: una metrica per i modelli di classificazione che risponde alle seguenti domanda: tra tutte le possibili etichette positive, quante ha fatto il modello identificare correttamente?

    • accuracy: l'accuratezza è la frazione delle previsioni che un modello di classificazione ha capito bene.

    • f1_score: una misura dell'accuratezza del modello. Il punteggio f1 è la media armonica di la precisione e il richiamo. Il valore migliore di un punteggio f1 è 1. Il valore peggiore è 0.

    • log_loss: la funzione di perdita usata in una regressione logistica. Questa è la misura di quanto sono distanti le previsioni del modello dalle etichette corrette.

    • roc_auc: l'area sotto il ROC della curva. Questa è la probabilità che un classificatore sia più sicuro che un un esempio positivo scelto in modo casuale è in realtà positivo di un esempio l'esempio di esclusione scelto è positivo. Per ulteriori informazioni, vedi Classificazione nel Machine Learning Crash Course.

Dettagli query

L'istruzione SELECT iniziale recupera le colonne dal modello.

La clausola FROM utilizza la funzione ML.EVALUATE rispetto al modello.

L'istruzione SELECT e la clausola FROM nidificate sono le stesse nella query CREATE MODEL.

Clausola WHERE - _TABLE_SUFFIX BETWEEN '20170701' AND '20170801' : limita il numero di tabelle analizzate dalla query. L'intervallo di date scansionata è dal 1° luglio 2017 al 1° agosto 2017. Questi sono i dati che stai utilizzando per valutano il rendimento predittivo del modello. È stato raccolto nel mese subito dopo il periodo di tempo compreso dai dati di addestramento.

DataFrame BigQuery

Prima di provare questo esempio, segui i DataFrame di BigQuery nella guida rapida di BigQuery utilizzando BigQuery DataFrames. Per ulteriori informazioni, consulta Documentazione di riferimento di BigQuery DataFrames.

Per eseguire l'autenticazione su BigQuery, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Impostare l'autenticazione per un ambiente di sviluppo locale.

import bigframes.pandas as bpd

# Select model you'll use for evaluating. `read_gbq_model` loads model data from a
# BigQuery, but you could also use the `model` object from the previous steps.
model = bpd.read_gbq_model(
    your_model_id,  # For example: "bqml_tutorial.sample_model",
)

# The filters parameter limits the number of tables scanned by the query.
# The date range scanned is July 1, 2017 to August 1, 2017. This is the
# data you're using to evaluate the predictive performance of the model.
# It was collected in the month immediately following the time period
# spanned by the training data.
df = bpd.read_gbq_table(
    "bigquery-public-data.google_analytics_sample.ga_sessions_*",
    filters=[
        ("_table_suffix", ">=", "20170701"),
        ("_table_suffix", "<=", "20170801"),
    ],
)

transactions = df["totals"].struct.field("transactions")
label = transactions.notnull().map({True: 1, False: 0}).rename("label")
operating_system = df["device"].struct.field("operatingSystem")
operating_system = operating_system.fillna("")
is_mobile = df["device"].struct.field("isMobile")
country = df["geoNetwork"].struct.field("country").fillna("")
pageviews = df["totals"].struct.field("pageviews").fillna(0)
features = bpd.DataFrame(
    {
        "os": operating_system,
        "is_mobile": is_mobile,
        "country": country,
        "pageviews": pageviews,
    }
)

# Some models include a convenient .score(X, y) method for evaluation with a preset accuracy metric:

# Because you performed a logistic regression, the results include the following columns:

# - precision — A metric for classification models. Precision identifies the frequency with
# which a model was correct when predicting the positive class.

# - recall — A metric for classification models that answers the following question:
# Out of all the possible positive labels, how many did the model correctly identify?

# - accuracy — Accuracy is the fraction of predictions that a classification model got right.

# - f1_score — A measure of the accuracy of the model. The f1 score is the harmonic average of
# the precision and recall. An f1 score's best value is 1. The worst value is 0.

# - log_loss — The loss function used in a logistic regression. This is the measure of how far the
# model's predictions are from the correct labels.

# - roc_auc — The area under the ROC curve. This is the probability that a classifier is more confident that
# a randomly chosen positive example
# is actually positive than that a randomly chosen negative example is positive. For more information,
# see ['Classification']('https://developers.google.com/machine-learning/crash-course/classification/video-lecture')
# in the Machine Learning Crash Course.

model.score(features, label)
#    precision    recall  accuracy  f1_score  log_loss   roc_auc
# 0   0.412621  0.079143  0.985074  0.132812  0.049764  0.974285
# [1 rows x 6 columns]

Usa il modello per prevedere i risultati

Utilizza il modello per prevedere il numero di transazioni effettuate dai visitatori del sito web di ogni paese.

SQL

  1. Nella console Google Cloud, vai alla pagina BigQuery.

    Vai a BigQuery

  2. Esegui la seguente istruzione nell'editor query:

    SELECT
    country,
    SUM(predicted_label) as total_predicted_purchases
    FROM
    ML.PREDICT(MODEL `bqml_tutorial.sample_model`, (
    SELECT
    IFNULL(device.operatingSystem, "") AS os,
    device.isMobile AS is_mobile,
    IFNULL(totals.pageviews, 0) AS pageviews,
    IFNULL(geoNetwork.country, "") AS country
    FROM
    `bigquery-public-data.google_analytics_sample.ga_sessions_*`
    WHERE
    _TABLE_SUFFIX BETWEEN '20170701' AND '20170801'))
    GROUP BY country
    ORDER BY total_predicted_purchases DESC
    LIMIT 10
    

    I risultati dovrebbero essere simili ai seguenti:

    +----------------+---------------------------+
    |    country     | total_predicted_purchases |
    +----------------+---------------------------+
    | United States  |                       220 |
    | Taiwan         |                         8 |
    | Canada         |                         7 |
    | India          |                         2 |
    | Turkey         |                         2 |
    | Japan          |                         2 |
    | Italy          |                         1 |
    | Brazil         |                         1 |
    | Singapore      |                         1 |
    | Australia      |                         1 |
    +----------------+---------------------------+
    

Dettagli query

L'istruzione SELECT iniziale recupera la colonna country e somma i predicted_label. La colonna predicted_label viene generata dal metodo Funzione ML.PREDICT. Quando utilizzi la funzione ML.PREDICT, l'output il nome della colonna per il modello è predicted_<label_column_name>. Per lineari di regressione lineare, predicted_label è il valore stimato di label. Per i modelli di regressione logistica, predicted_label è l'etichetta migliore descrive il valore dei dati di input specificato, 0 o 1.

La funzione ML.PREDICT viene utilizzata per prevedere i risultati mediante il modello.

L'istruzione SELECT e la clausola FROM nidificate sono le stesse nella query CREATE MODEL.

Clausola WHERE - _TABLE_SUFFIX BETWEEN '20170701' AND '20170801' : limita il numero di tabelle analizzate dalla query. L'intervallo di date scansionata è dal 1° luglio 2017 al 1° agosto 2017. Questi sono i dati per cui stai per fare previsioni. È stato raccolto il mese successivo all'orario selezionato. periodo compreso dai dati di addestramento.

Le clausole GROUP BY e ORDER BY raggruppano i risultati per paese e ordine per la somma degli acquisti previsti in ordine decrescente.

La clausola LIMIT viene utilizzata qui per visualizzare solo i primi 10 risultati.

DataFrame BigQuery

Prima di provare questo esempio, segui i DataFrame di BigQuery nella guida rapida di BigQuery utilizzando BigQuery DataFrames. Per ulteriori informazioni, consulta Documentazione di riferimento di BigQuery DataFrames.

Per eseguire l'autenticazione su BigQuery, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Impostare l'autenticazione per un ambiente di sviluppo locale.

import bigframes.pandas as bpd

# Select model you'll use for predicting.
# `read_gbq_model` loads model data from
# BigQuery, but you could also use the `model`
# object from the previous steps.
model = bpd.read_gbq_model(
    your_model_id,  # For example: "bqml_tutorial.sample_model",
)

# The filters parameter limits the number of tables scanned by the query.
# The date range scanned is July 1, 2017 to August 1, 2017. This is the
# data you're using to make the prediction.
# It was collected in the month immediately following the time period
# spanned by the training data.
df = bpd.read_gbq_table(
    "bigquery-public-data.google_analytics_sample.ga_sessions_*",
    filters=[
        ("_table_suffix", ">=", "20170701"),
        ("_table_suffix", "<=", "20170801"),
    ],
)

operating_system = df["device"].struct.field("operatingSystem")
operating_system = operating_system.fillna("")
is_mobile = df["device"].struct.field("isMobile")
country = df["geoNetwork"].struct.field("country").fillna("")
pageviews = df["totals"].struct.field("pageviews").fillna(0)
features = bpd.DataFrame(
    {
        "os": operating_system,
        "is_mobile": is_mobile,
        "country": country,
        "pageviews": pageviews,
    }
)
# Use Logistic Regression predict method to predict results
# using your model.
# Find more information here in
# [BigFrames](https://cloud.google.com/python/docs/reference/bigframes/latest/bigframes.ml.linear_model.LogisticRegression#bigframes_ml_linear_model_LogisticRegression_predict)

predictions = model.predict(features)

# Call groupby method to group predicted_label by country.
# Call sum method to get the total_predicted_label by country.
total_predicted_purchases = predictions.groupby(["country"])[
    ["predicted_label"]
].sum()

# Call the sort_values method with the parameter
# ascending = False to get the highest values.
# Call head method to limit to the 10 highest values.
total_predicted_purchases.sort_values(ascending=False).head(10)

# country
# United States    220
# Taiwan             8
# Canada             7
# India              2
# Japan              2
# Turkey             2
# Australia          1
# Brazil             1
# Germany            1
# Guyana             1
# Name: predicted_label, dtype: Int64

Prevedere gli acquisti per utente

Prevedere il numero di transazioni che verranno effettuate da ogni visitatore del sito web.

SQL

Questa query è identica a quella della sezione precedente, ad eccezione della query GROUP BY. Qui la clausola GROUP BY: GROUP BY fullVisitorId , viene utilizzato per raggruppare i risultati per ID visitatore.

  1. Nella console Google Cloud, vai alla pagina BigQuery.

    Vai a BigQuery

  2. Esegui la seguente istruzione nell'editor query:

    SELECT
    fullVisitorId,
    SUM(predicted_label) as total_predicted_purchases
    FROM
    ML.PREDICT(MODEL `bqml_tutorial.sample_model`, (
    SELECT
    IFNULL(device.operatingSystem, "") AS os,
    device.isMobile AS is_mobile,
    IFNULL(totals.pageviews, 0) AS pageviews,
    IFNULL(geoNetwork.country, "") AS country,
    fullVisitorId
    FROM
    `bigquery-public-data.google_analytics_sample.ga_sessions_*`
    WHERE
    _TABLE_SUFFIX BETWEEN '20170701' AND '20170801'))
    GROUP BY fullVisitorId
    ORDER BY total_predicted_purchases DESC
    LIMIT 10
    

    I risultati dovrebbero essere simili ai seguenti:

      +---------------------+---------------------------+
      |    fullVisitorId    | total_predicted_purchases |
      +---------------------+---------------------------+
      | 9417857471295131045 |                         4 |
      | 112288330928895942  |                         2 |
      | 2158257269735455737 |                         2 |
      | 489038402765684003  |                         2 |
      | 057693500927581077  |                         2 |
      | 2969418676126258798 |                         2 |
      | 5073919761051630191 |                         2 |
      | 7420300501523012460 |                         2 |
      | 0456807427403774085 |                         2 |
      | 2105122376016897629 |                         2 |
      +---------------------+---------------------------+
      

DataFrame BigQuery

Prima di provare questo esempio, segui i DataFrame di BigQuery nella guida rapida di BigQuery utilizzando BigQuery DataFrames. Per ulteriori informazioni, consulta Documentazione di riferimento di BigQuery DataFrames.

Per eseguire l'autenticazione su BigQuery, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Impostare l'autenticazione per un ambiente di sviluppo locale.


import bigframes.pandas as bpd

# Select model you'll use for predicting.
# `read_gbq_model` loads model data from
# BigQuery, but you could also use the `model`
# object from the previous steps.
model = bpd.read_gbq_model(
    your_model_id,  # For example: "bqml_tutorial.sample_model",
)

# The filters parameter limits the number of tables scanned by the query.
# The date range scanned is July 1, 2017 to August 1, 2017. This is the
# data you're using to make the prediction.
# It was collected in the month immediately following the time period
# spanned by the training data.
df = bpd.read_gbq_table(
    "bigquery-public-data.google_analytics_sample.ga_sessions_*",
    filters=[
        ("_table_suffix", ">=", "20170701"),
        ("_table_suffix", "<=", "20170801"),
    ],
)

operating_system = df["device"].struct.field("operatingSystem")
operating_system = operating_system.fillna("")
is_mobile = df["device"].struct.field("isMobile")
country = df["geoNetwork"].struct.field("country").fillna("")
pageviews = df["totals"].struct.field("pageviews").fillna(0)
full_visitor_id = df["fullVisitorId"]

features = bpd.DataFrame(
    {
        "os": operating_system,
        "is_mobile": is_mobile,
        "country": country,
        "pageviews": pageviews,
        "fullVisitorId": full_visitor_id,
    }
)

predictions = model.predict(features)

# Call groupby method to group predicted_label by visitor.
# Call sum method to get the total_predicted_label by visitor.
total_predicted_purchases = predictions.groupby(["fullVisitorId"])[
    ["predicted_label"]
].sum()

# Call the sort_values method with the parameter
# ascending = False to get the highest values.
# Call head method to limit to the 10 highest values.
total_predicted_purchases.sort_values(ascending=False).head(10)

# fullVisitorId
# 9417857471295131045    4
# 0376394056092189113    2
# 0456807427403774085    2
# 057693500927581077     2
# 112288330928895942     2
# 1280993661204347450    2
# 2105122376016897629    2
# 2158257269735455737    2
# 2969418676126258798    2
# 489038402765684003     2
# Name: predicted_label, dtype: Int64

Esegui la pulizia

Per evitare che al tuo account Google Cloud vengano addebitati costi per le risorse utilizzate in questa pagina, segui questi passaggi.

Puoi eliminare il progetto che hai creato oppure mantenerlo ed eliminare del set di dati.

Eliminazione del set di dati

L'eliminazione del progetto rimuove tutti i set di dati e tutte le tabelle nel progetto. Se se preferisci riutilizzare il progetto, puoi eliminare il set di dati creato tutorial:

  1. Nella console Google Cloud, vai alla pagina BigQuery.

    Vai a BigQuery

  2. Nel riquadro Explorer, seleziona il set di dati bqml_tutorial che hai creato.

  3. Fai clic su Azioni &gt; Elimina.

  4. Nella finestra di dialogo Elimina set di dati, digita per confermare il comando di eliminazione delete.

  5. Fai clic su Elimina.

Elimina il progetto

Per eliminare il progetto:

  1. Nella console Google Cloud, vai alla pagina Gestisci risorse.

    Vai a Gestisci risorse

  2. Nell'elenco dei progetti, seleziona il progetto che vuoi eliminare, quindi fai clic su Elimina.
  3. Nella finestra di dialogo, digita l'ID del progetto e fai clic su Chiudi per eliminare il progetto.

Passaggi successivi