Utilizza ML e AI con BigQuery DataFrames

La libreria bigframes.ml in BigQuery DataFrames ti consente di integrare le funzionalità di AI e machine learning (ML) nei tuoi flussi di lavoro di analisi dei dati. La pre-elaborazione dei dati, l'addestramento dei modelli e la creazione di pipeline ML direttamente in BigQuery ti consentono di scalare l'analisi senza estrarre i set di dati dal data warehouse.

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per completare le attività descritte in questo documento, chiedi all'amministratore di concederti i seguenti ruoli IAM nel progetto:

Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.

Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.

Località ML

La libreria bigframes.ml supporta le stesse località di BigQuery ML. La previsione del modello BigQuery ML e altre funzioni ML sono supportate in tutte le regioni BigQuery. Il supporto per l'addestramento dei modelli varia in base alla regione. Per saperne di più, consulta Località di BigQuery ML.

Pre-elabora i dati

Crea trasformatori per preparare i dati per l'utilizzo negli estimatori (modelli) utilizzando il modulo bigframes.ml.preprocessing e il modulo bigframes.ml.compose. BigQuery DataFrames offre le seguenti trasformazioni:

  • Per raggruppare i dati continui in intervalli, utilizza la classe KBinsDiscretizer nel modulo bigframes.ml.preprocessing.

  • Per normalizzare le etichette target come valori interi, utilizza la classe LabelEncoder nel modulo bigframes.ml.preprocessing.

  • Per scalare ogni caratteristica nell'intervallo [-1, 1] in base al suo valore assoluto massimo, utilizza la classe MaxAbsScaler nel modulo bigframes.ml.preprocessing.

  • Per standardizzare le caratteristiche scalando ciascuna nell'intervallo [0, 1], utilizza la classe MinMaxScaler nel modulo bigframes.ml.preprocessing.

  • Per standardizzare le caratteristiche rimuovendo la media e scalando alla varianza unitaria, utilizza la classe StandardScaler nel modulo bigframes.ml.preprocessing.

  • Per trasformare i valori categorici in formato numerico, utilizza la classe OneHotEncoder nel modulo bigframes.ml.preprocessing.

  • Per applicare i trasformatori alle colonne dei DataFrame, utilizza la classe ColumnTransformer nel modulo bigframes.ml.compose.

Addestra i modelli

Puoi creare estimatori per addestrare i modelli in BigQuery DataFrames.

Modelli di clustering

Puoi creare estimatori per i modelli di clustering utilizzando il modulo bigframes.ml.cluster. Per creare modelli di clustering k-means, utilizza la classe KMeans. Utilizza questi modelli per la segmentazione dei dati. Ad esempio, l'identificazione dei segmenti di clienti. K-means è una tecnica di apprendimento non supervisionato, quindi l'addestramento del modello non richiede etichette o dati suddivisi per l'addestramento o la valutazione.

Puoi utilizzare il modulo bigframes.ml.cluster per creare estimatori per i modelli di clustering.

Il seguente esempio di codice mostra l'utilizzo della classe bigframes.ml.cluster KMeans per creare un modello di clustering k-means per la segmentazione dei dati:

from bigframes.ml.cluster import KMeans
import bigframes.pandas as bpd

# Load data from BigQuery
query_or_table = "bigquery-public-data.ml_datasets.penguins"
bq_df = bpd.read_gbq(query_or_table)

# Create the KMeans model
cluster_model = KMeans(n_clusters=10)
cluster_model.fit(bq_df["culmen_length_mm"], bq_df["sex"])

# Predict using the model
result = cluster_model.predict(bq_df)
# Score the model
score = cluster_model.score(bq_df)

Modelli di scomposizione

Puoi creare estimatori per i modelli di scomposizione utilizzando il modulo bigframes.ml.decomposition. Per creare modelli di analisi delle componenti principali (PCA), utilizza la classe PCA. Utilizza questi modelli per calcolare i componenti principali e utilizzarli per eseguire un cambio di base sui dati. L'utilizzo della classe PCA consente di ridurre la dimensionalità proiettando ogni punto dati solo sui primi componenti principali per ottenere dati di dimensioni inferiori, preservando al contempo la maggior parte della variazione dei dati.

Modelli di insieme

Puoi creare estimatori per i modelli di ensemble utilizzando il modulo bigframes.ml.ensemble.

  • Per creare modelli di classificatore di foresta casuale, utilizza la classe RandomForestClassifier. Utilizza questi modelli per creare alberi decisionali con più metodi di apprendimento per la classificazione.

  • Per creare modelli di regressione con foresta casuale, utilizza la classe RandomForestRegressor. Utilizza questi modelli per creare alberi decisionali con più metodi di apprendimento per la regressione.

  • Per creare modelli di classificatore ad albero con gradient boosting, utilizza la classe XGBClassifier. Utilizza questi modelli per creare in modo additivo alberi decisionali con più metodi di apprendimento per la classificazione.

  • Per creare modelli di regressione con gradient boosting, utilizza la classe XGBRegressor. Utilizza questi modelli per creare in modo additivo alberi decisionali con più metodi di apprendimento per la regressione.

Modelli di previsione

Puoi creare estimatori per i modelli di previsione utilizzando il modulo bigframes.ml.forecasting. Per creare modelli di previsione delle serie temporali, utilizza la classe ARIMAPlus.

Modelli importati

Puoi creare estimatori per i modelli importati utilizzando il modulo bigframes.ml.imported.

Modelli lineari

Crea estimatori per i modelli lineari utilizzando il modulo bigframes.ml.linear_model.

  • Per creare modelli di regressione lineare, utilizza la classe LinearRegression. Utilizza questi modelli per le previsioni, ad esempio per prevedere le vendite di un articolo in un determinato giorno.

  • Per creare modelli di regressione logistica, utilizza la classe LogisticRegression. Utilizza questi modelli per la classificazione di due o più valori possibili, ad esempio se un input è low-value, medium-value o high-value.

Il seguente esempio di codice mostra l'utilizzo di bigframes.ml per eseguire le seguenti operazioni:

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

# Load data from BigQuery
query_or_table = "bigquery-public-data.ml_datasets.penguins"
bq_df = bpd.read_gbq(query_or_table)

# Filter down to the data to the Adelie Penguin species
adelie_data = bq_df[bq_df.species == "Adelie Penguin (Pygoscelis adeliae)"]

# Drop the species column
adelie_data = adelie_data.drop(columns=["species"])

# Drop rows with nulls to get training data
training_data = adelie_data.dropna()

# Specify your feature (or input) columns and the label (or output) column:
feature_columns = training_data[
    ["island", "culmen_length_mm", "culmen_depth_mm", "flipper_length_mm", "sex"]
]
label_columns = training_data[["body_mass_g"]]

test_data = adelie_data[adelie_data.body_mass_g.isnull()]

# Create the linear model
model = LinearRegression()
model.fit(feature_columns, label_columns)

# Score the model
score = model.score(feature_columns, label_columns)

# Predict using the model
result = model.predict(test_data)

Modelli linguistici di grandi dimensioni

Puoi creare estimatori per gli LLM utilizzando il modulo bigframes.ml.llm.

  • Per creare modelli di generatore di testo Gemini, utilizza la classe GeminiTextGenerator. Utilizza questi modelli per le attività di generazione di testo.

  • Per creare estimatori per modelli linguistici di grandi dimensioni (LLM) remoti, utilizza il modulo bigframes.ml.llm.

Il seguente esempio di codice mostra l'utilizzo della classe bigframes.ml.llm GeminiTextGenerator per creare un modello Gemini per la generazione di codice:

from bigframes.ml.llm import GeminiTextGenerator
import bigframes.pandas as bpd

# Create the Gemini LLM model
session = bpd.get_global_session()
connection = f"{PROJECT_ID}.{REGION}.{CONN_NAME}"
model = GeminiTextGenerator(
    session=session, connection_name=connection, model_name="gemini-2.0-flash-001"
)

df_api = bpd.read_csv("gs://cloud-samples-data/vertex-ai/bigframe/df.csv")

# Prepare the prompts and send them to the LLM model for prediction
df_prompt_prefix = "Generate Pandas sample code for DataFrame."
df_prompt = df_prompt_prefix + df_api["API"]

# Predict using the model
df_pred = model.predict(df_prompt.to_frame(), max_output_tokens=1024)

Modelli remoti

Per utilizzare i modelli remoti di BigQuery DataFrames ML (bigframes.ml.remote o bigframes.ml.llm), devi abilitare le seguenti API:

Quando utilizzi i modelli remoti di BigQuery DataFrames ML, devi disporre del ruolo Amministratore IAM progetto (roles/resourcemanager.projectIamAdmin) se utilizzi una connessione BigQuery predefinita o del ruolo Browser (roles/browser) se utilizzi una connessione preconfigurata. Puoi evitare questo requisito impostando l'opzione bigframes.pandas.options.bigquery.skip_bq_connection_check su True. In questo caso, la connessione (predefinita o preconfigurata) viene utilizzata così com'è, senza alcun controllo di esistenza o autorizzazione. Se utilizzi la connessione preconfigurata e salti il controllo della connessione, verifica quanto segue:

  • La connessione viene creata nella località corretta.
  • Se utilizzi i modelli remoti di BigQuery DataFrames ML, il service account ha il ruolo Agent Platform User (roles/aiplatform.user) nel progetto.

La creazione di un modello remoto in BigQuery DataFrames crea una connessione BigQuery. Per impostazione predefinita, viene utilizzata una connessione con il nome bigframes-default-connection. Se preferisci, puoi utilizzare una connessione BigQuery preconfigurata. In questo caso, la creazione della connessione viene saltata. Al account di servizio per la connessione predefinita viene concesso il ruolo Agent Platform User (roles/aiplatform.user) nel progetto.

Crea pipeline

Puoi creare pipeline ML utilizzando il modulo bigframes.ml.pipeline. Le pipeline consentono di assemblare diversi passaggi di ML per la convalida incrociata, impostando al contempo parametri diversi. In questo modo il codice viene semplificato e puoi eseguire il deployment dei passaggi di pre-elaborazione dei dati e di uno strumento di stima insieme.

Per creare una pipeline di trasformazioni con uno stimatore finale, utilizza la classe Pipeline.

Seleziona modelli

Per suddividere i set di dati di addestramento e test e selezionare i modelli migliori, utilizza il modulo bigframes.ml.model_selection:

  • Per suddividere i dati in set di addestramento e test (valutazione), come mostrato nell'esempio di codice seguente, utilizza la funzione train_test_split:

    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
    
  • Per creare set di addestramento e test con più fold per addestrare e valutare i modelli, come mostrato nell'esempio di codice seguente, utilizza la classe KFold e il metodo KFold.split. Questa funzionalità è utile per i set di dati di piccole dimensioni.

    kf = KFold(n_splits=5)
    for i, (X_train, X_test, y_train, y_test) in enumerate(kf.split(X, y)):
    # Train and evaluate models with training and testing sets
    
  • Per creare automaticamente set di addestramento e test multi-fold, addestrare e valutare il modello e ottenere il risultato di ogni fold, come mostrato nell'esempio di codice seguente, utilizza la funzione cross_validate:

    scores = cross_validate(model, X, y, cv=5)
    

Passaggi successivi