ML und KI mit BigQuery DataFrames verwenden

BigQuery DataFrames bietet ML- und KI-Funktionen für BigQuery DataFrames mit der bigframes.ml-Bibliothek.

Sie können Daten vorverarbeiten, Estimatoren erstellen, um Modelle in BigQuery DataFrames zu trainieren, ML- Pipelines erstellen und Trainings- und Test-Datasets aufteilen.

Erforderliche Rollen

Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen für das Projekt zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Ausführen der Aufgaben in diesem Dokument benötigen:

Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.

Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.

ML-Standorte

Die bigframes.ml-Bibliothek unterstützt dieselben Standorte wie BigQuery ML. BigQuery ML-Modellvorhersagen und andere ML-Funktionen werden in allen BigQuery-Regionen unterstützt. Die Unterstützung für das Modelltraining variiert je nach Region. Weitere Informationen finden Sie unter BigQuery ML-Standorte.

Daten vorverarbeiten

Erstellen Sie Transformer, um Daten für die Verwendung in Estimators (Modellen) durch Verwendung des bigframes.ml.preprocessing Moduls und des bigframes.ml.compose Moduls vorzubereiten. BigQuery DataFrames bietet die folgenden Transformationen:

  • Verwenden Sie die KBinsDiscretizer Klasse im bigframes.ml.preprocessing Modul, um kontinuierliche Daten in Intervalle zu bündeln.

  • Verwenden Sie die LabelEncoder Klasse im bigframes.ml.preprocessing Modul, um die Ziellabels als Ganzzahlwerte zu normalisieren.

  • Verwenden Sie die MaxAbsScaler Klasse im bigframes.ml.preprocessing Modul, um jedes Feature um seinen maximalen absoluten Wert auf den Bereich [-1, 1] zu skalieren.

  • Verwenden Sie die MinMaxScaler Klasse im bigframes.ml.preprocessing Modul, um Features zu standardisieren, indem Sie jedes Feature auf den Bereich [0, 1], skalieren.

  • Verwenden Sie die StandardScaler Klasse im bigframes.ml.preprocessing Modul, um Merkmale zu standardisieren. Dazu entfernen Sie den Mittelwert und die Skalierung auf die Einheitsvarianz.

  • Verwenden Sie die OneHotEncoder Klasse im bigframes.ml.preprocessing Modul, um kategoriale Werte in ein numerisches Format umzuwandeln.

  • Verwenden Sie die ColumnTransformer Klasse im bigframes.ml.compose Modul, um Transformer auf DataFrames-Spalten anzuwenden.

Modelle trainieren

Sie können Estimatoren erstellen, um Modelle in BigQuery DataFrames zu trainieren.

Clustering-Modelle

Sie können Estimatoren für Clustering-Modelle mit dem bigframes.ml.cluster Modul erstellen. Verwenden Sie die KMeans Klasse, um K-Means-Clustering-Modelle zu erstellen. Verwenden Sie diese Modelle für die Datensegmentierung. Beispiel: Identifizierung von Kundensegmenten. Da K-Means eine unbeaufsichtigte Lernmethode ist, sind für das Modelltraining weder Labels noch Datenaufteilungen für die Trainings- oder Evaluierungsphase erforderlich.

Mit dem Modul bigframes.ml.cluster können Sie Estimatoren für Clustering-Modelle erstellen.

Das folgende Codebeispiel zeigt die Verwendung der Klasse bigframes.ml.cluster KMeans zum Erstellen eines K-Means-Clustering-Modells für die Datensegmentierung:

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)

Zerlegungsmodelle

Sie können Estimatoren für Zerlegungsmodelle mit dem bigframes.ml.decomposition Modul erstellen. Verwenden Sie die PCA Klasse, um Modelle für die Hauptkomponentenanalyse (Principal Component Analysis, PCA) zu erstellen. Verwenden Sie diese Modelle zur Berechnung der Hauptkomponenten und zur Durchführung einer Änderung der Grundlage der Daten. Mit der Klasse PCA wird die Dimensionalität reduziert, indem jeder Datenpunkt auf die ersten Hauptkomponenten projiziert wird, um niedrigdimensionale Daten zu erhalten und gleichzeitig einen möglichst großen Teil der Datenabweichung beizubehalten.

Ensemble-Modelle

Sie können Estimatoren für Ensemble-Modelle mit dem bigframes.ml.ensemble Modul erstellen.

  • Verwenden Sie die RandomForestClassifier Klasse, um Random Forest-Klassifikatormodelle zu erstellen. Verwenden Sie diese Modelle, um mehrere Entscheidungsbäume für Lernmethoden zur Klassifizierung zu erstellen.

  • Verwenden Sie die RandomForestRegressor Klasse, um Random Forest-Regressionsmodelle zu erstellen. Verwenden Sie diese Modelle, um mehrere Entscheidungsbäume für Lernmethoden für die Regression zu erstellen.

  • Verwenden Sie die XGBClassifier Klasse, um Gradienten-Boosted Tree-Klassifikatormodelle zu erstellen. Verwenden Sie diese Modelle, um mehrere Entscheidungsbäume für Lernmethoden zur Klassifizierung additiv zu erstellen.

  • Verwenden Sie die XGBRegressor Klasse, um Gradienten-Boosting-Baum-Regressionsmodelle zu erstellen. Verwenden Sie diese Modelle, um mehrere Entscheidungsbäume für Lernmethoden für die Regression additiv zu erstellen.

Prognosemodelle

Sie können Estimatoren für Prognosemodelle mit dem bigframes.ml.forecasting Modul erstellen. Verwenden Sie die ARIMAPlus Klasse, um Zeitreihenprognosemodelle zu erstellen.

Importierte Modelle

Sie können Estimatoren für importierte Modelle mit dem bigframes.ml.imported Modul erstellen.

Lineare Modelle

Erstellen Sie Estimatoren für lineare Modelle mit dem bigframes.ml.linear_model Modul.

  • Verwenden Sie die LinearRegression Klasse, um lineare Regressionsmodelle zu erstellen. Verwenden Sie diese Modelle für Prognosen, z. B. für Umsatzprognosen für einen Artikel an einem bestimmten Tag.

  • Verwenden Sie die LogisticRegression Klasse, um logistische Regressionsmodelle zu erstellen. Verwenden Sie diese Modelle für die Klassifizierung von zwei oder mehr möglichen Werten, z. B. ob eine Eingabe low-value, medium-value oder high-value ist.

Das folgende Codebeispiel zeigt die Verwendung von bigframes.ml für folgende Aufgaben:

  • Daten aus BigQuery laden.
  • Trainingsdaten bereinigen und vorbereiten.
  • Ein Regressionsmodell vom Typ bigframes.ml.LinearRegression erstellen und anwenden.
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)

Large Language Models

Sie können Estimatoren für LLMs mithilfe des bigframes.ml.llm Moduls erstellen.

  • Verwenden Sie die GeminiTextGenerator Klasse, um Gemini-Textgeneratormodelle zu erstellen. Verwenden Sie diese Modelle für Aufgaben zur Textgenerierung.

  • Mit dem bigframes.ml.llm Modul können Sie Estimatoren für Remote-Large Language Models (LLMs) erstellen.

Das folgende Codebeispiel zeigt die Verwendung der bigframes.ml.llm GeminiTextGenerator Klasse zum Erstellen eines Gemini-Modells für die Codegenerierung:

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)

Remotemodelle

Um BigQuery DataFrames ML-Remotemodelle (bigframes.ml.remote oder bigframes.ml.llm) zu verwenden, müssen Sie die folgenden APIs aktivieren:

Wenn Sie BigQuery DataFrames ML-Remotemodelle verwenden, benötigen Sie die Rolle „Projekt-IAM-Administrator“ (roles/resourcemanager.projectIamAdmin) wenn Sie eine standardmäßige BigQuery-Verbindung verwenden, oder die Rolle „Browser“ (roles/browser) wenn Sie eine vorkonfigurierte Verbindung verwenden. Sie können diese Anforderung vermeiden, indem Sie die Option bigframes.pandas.options.bigquery.skip_bq_connection_check auf True setzen. In diesem Fall wird die Verbindung (standardmäßig oder vorkonfiguriert) unverändert verwendet, ohne dass geprüft wird, ob sie besteht oder eine Berechtigung vorhanden ist. Wenn Sie die vorkonfigurierte Verbindung verwenden und die Verbindungsprüfung überspringen, prüfen Sie Folgendes:

  • Die Verbindung wird am richtigen Standort erstellt.
  • Wenn Sie BigQuery DataFrames ML-Remotemodelle verwenden, hat das Dienstkonto die Rolle „Vertex AI-Nutzer“ (roles/aiplatform.user) für das Projekt.

Durch das Erstellen eines Remotemodells in BigQuery DataFrames wird eine BigQuery-Verbindung erstellt. Standardmäßig wird eine Verbindung mit dem Namen bigframes-default-connection verwendet. Sie können eine vorkonfigurierte BigQuery-Verbindung verwenden, wenn Sie möchten. In diesem Fall wird die Verbindungserstellung übersprungen. Dem Dienstkonto für die Standardverbindung wurde die Rolle „Vertex AI-Nutzer“ (roles/aiplatform.user) für das Projekt zugewiesen.

Pipelines erstellen

Sie können ML-Pipelines mit dem bigframes.ml.pipeline Modul erstellen. Mit Pipelines können Sie mehrere ML-Schritte zusammenstellen, die gemeinsam validiert werden sollen, während Sie verschiedene Parameter festlegen. Dies vereinfacht den Code und ermöglicht es Ihnen, Datenvorverarbeitungsschritte und einen Estimator zusammen bereitzustellen.

Verwenden Sie die Pipeline Klasse, um eine Pipeline von Transformationen mit einem endgültigen Estimator zu erstellen.

Modelle auswählen

Verwenden Sie das bigframes.ml.model_selection Modul Modul, um Ihre Trainings- und Test-Datasets aufzuteilen und die besten Modelle auszuwählen:

  • Verwenden Sie die train_test_split Funktion, um die Daten in Trainings- und Test-Datasets (Evaluierungs-Datasets) aufzuteilen, wie im folgenden Codebeispiel gezeigt:

    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
    
  • Verwenden Sie die Klasse KFoldund die Methode KFold.split, um Trainings- und Test-Datasets mit mehreren Faltungen zu erstellen, um Modelle zu trainieren und zu bewerten, wie im folgenden Codebeispiel gezeigt: Diese Funktion ist für kleine Datasets nützlich.

    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
    
  • Verwenden Sie die Funktion cross_validate, um automatisch Trainings- und Test-Datasets mit mehreren Faltungen zu erstellen, das Modell zu trainieren und zu bewerten und das Ergebnis jeder Faltung zu erhalten, wie im folgenden Codebeispiel gezeigt:

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

Nächste Schritte