Utilizzare ML e AI con BigQuery DataFrames

BigQuery DataFrames fornisce funzionalità di ML e AI per BigQuery DataFrames utilizzando la libreria bigframes.ml.

Puoi pre-elaborare i dati, creare stimatori per addestrare modelli in BigQuery DataFrames, creare pipeline ML, e dividere i set di dati di addestramento e test.

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per completare le attività descritte in questo documento, chiedi all'amministratore di concederti i seguenti ruoli IAM per il 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à BigQuery ML.

Pre-elaborare i dati

Crea trasformatori per preparare i dati da utilizzare negli stimatori (modelli) by using the bigframes.ml.preprocessing module and the bigframes.ml.compose module. BigQuery DataFrames offre le seguenti trasformazioni:

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

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

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

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

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

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

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

Addestrare i modelli

Puoi creare stimatori per addestrare i modelli in BigQuery DataFrames.

Modelli di clustering

Puoi creare stimatori per i modelli di clustering utilizzando il bigframes.ml.cluster modulo. Per creare modelli di clustering K-means, utilizza la KMeans classe. 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 stimatori 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 decomposizione

Puoi creare stimatori per i modelli di decomposizione utilizzando il bigframes.ml.decomposition modulo. Per creare modelli di analisi delle componenti principali (PCA), utilizza la PCA classe. Utilizza questi modelli per calcolare le componenti principali e utilizzarle per eseguire una modifica della base dei dati. L'utilizzo della classe PCA consente di ridurre la dimensionalità proiettando ogni punto dati solo sulle prime componenti principali per ottenere dati a dimensionalità inferiore, preservando al contempo la maggior parte della variazione dei dati.

Modelli di insieme

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

  • Per creare modelli di classificazione della foresta casuale, utilizza la RandomForestClassifier classe. Utilizza questi modelli per costruire più alberi decisionali del metodo di apprendimento per la classificazione.

  • Per creare modelli di regressione della foresta casuale, utilizza la RandomForestRegressor classe. Utilizza questi modelli per costruire più alberi decisionali del metodo di apprendimento per la regressione.

  • Per creare modelli di classificazione degli alberi con potenziamento del gradiente, utilizza la XGBClassifier classe. Utilizza questi modelli per costruire in modo additivo più alberi decisionali del metodo di apprendimento per la classificazione.

  • Per creare modelli di regressione degli alberi con potenziamento del gradiente, utilizza la XGBRegressor classe. Utilizza questi modelli per costruire in modo additivo più alberi decisionali del metodo di apprendimento per la regressione.

Modelli di previsione

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

Modelli importati

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

Modelli lineari

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

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

  • Per creare modelli di regressione logistica, utilizza la LogisticRegression classe. 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 stimatori per i modelli linguistici di grandi dimensioni utilizzando il bigframes.ml.llm modulo.

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

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

Il seguente esempio di codice mostra l'utilizzo della bigframes.ml.llm GeminiTextGenerator classe 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 BigQuery DataFrames ML (bigframes.ml.remote o bigframes.ml.llm), devi abilitare le seguenti API:

Quando utilizzi i modelli remoti BigQuery DataFrames ML, devi disporre del ruolo Amministratore IAM progetto (roles/resourcemanager.projectIamAdmin) se utilizzi una connessione BigQuery predefinita o del ruolo Visualizzatore (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 BigQuery DataFrames ML, il service account ha il ruolo Utente Vertex AI (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 ignorata. Al account di servizio per la connessione predefinita viene concesso il ruolo Utente Vertex AI (roles/aiplatform.user) nel progetto.

Creare pipeline

Puoi creare pipeline ML utilizzando bigframes.ml.pipeline modulo. Le pipeline ti consentono di assemblare più passaggi ML da convalidare incrociatamente impostando parametri diversi. In questo modo, il codice viene semplificato e puoi eseguire il deployment dei passaggi di pre-elaborazione dei dati e di uno stimatore.

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

Selezionare i modelli

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

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

    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
    
  • Per creare set di addestramento e test multi-fold per addestrare e valutare i modelli, come mostrato nel seguente esempio di codice, utilizza la KFold classe e il KFold.split metodo. 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 nel seguente esempio di codice, utilizza la cross_validate funzione:

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

Passaggi successivi