BigQuery DataFrames verwenden

BigQuery DataFrames bietet eine Pythonic DataFrame und eine API für maschinelles Lernen (ML), die von der BigQuery-Engine unterstützt wird. BigQuery DataFrames ist ein Open-Source-Paket. Sie können pip install --upgrade bigframes ausführen, um die neueste Version zu installieren.

BigQuery DataFrames bietet zwei Bibliotheken:

  • bigframes.pandas bietet eine mit Pandas kompatible API für Analysen.

  • bigframes.ml bietet eine scikit-learn-ähnliche API für maschinelles Lernen (ML).

Erforderliche Berechtigungen

Optionen

Nach der Installation müssen Sie den Standort und das Projekt angeben, in dem Sie BigQuery-DataFrames verwenden möchten. Sie können den Speicherort und das Projekt in Ihrem Notebook so definieren:
import bigframes.pandas as bpd

PROJECT_ID = "bigframes-dec"  # @param {type:"string"}
REGION = "US"  # @param {type:"string"}

# Set BigQuery DataFrames options
# Note: The project option is not required in all environments.
# On BigQuery Studio, the project ID is automatically detected.
bpd.options.bigquery.project = PROJECT_ID

# Note: The location option is not required.
# It defaults to the location of the first table or query
# passed to read_gbq(). For APIs where a location can't be
# auto-detected, the location defaults to the "US" location.
bpd.options.bigquery.location = REGION

Wenn bf.options.bigquery.project nicht festgelegt ist, wird die Umgebungsvariable $GOOGLE_CLOUD_PROJECT verwendet, die in der Notebooklaufzeit für die Bereitstellung von BigQuery Studio und Vertex AI-Notebooks festgelegt wird.

Ort der Datenverarbeitung

BigQuery DataFrames ist auf Skalierbarkeit ausgelegt, was durch die Speicherung von Daten und die Verarbeitung im BigQuery-Dienst ermöglicht wird. Sie können jedoch Daten in den Speicher Ihres Client-Rechners übertragen, indem Sie in einem DataFrame- oder Series-Objekt .to_pandas() aufrufen. In diesem Fall gilt die Speicherbeschränkung Ihres Clientcomputers.

Sitzungsstandort

BigQuery DataFrames verwendet ein lokales Sitzungsobjekt, um Metadaten intern zu verwalten. Diese Sitzung ist an einen Standort gebunden. BigQuery DataFrames verwendet den multiregionalen Standort US als Standard, aber Sie können session_options.location verwenden, um einen anderen Standort festzulegen. Jede Abfrage in einer Sitzung wird an dem Standort ausgeführt, an dem die Sitzung erstellt wurde. BigQuery-DataFrames fügt bf.options.bigquery.location automatisch den Speicherort der Tabelle ein, wenn der Nutzer mit read_gbq/read_gbq_table/read_gbq_query() beginnt und entweder oder in einer SQL-Anweisung eine Tabelle angibt.

Wenn Sie den Standort der erstellten DataFrame- oder Serienobjekte zurücksetzen möchten, können Sie die Sitzung durch Ausführen von bigframes.pandas.close_session() schließen. Danach können Sie bigframes.pandas.options.bigquery.location wiederverwenden, um einen anderen Ort angeben.

read_gbq() erfordert die Angabe eines Standorts, wenn sich das Dataset, das sie abfragen, nicht am multiregionalen Standort US befindet. Wenn Sie versuchen, eine Tabelle aus einem anderen Standort zu lesen, erhalten Sie die Ausnahme NotFound.

Datentypen

BigQuery DataFrames unterstützt die folgenden dtypes von Numpy und Pandas:

BigQuery BigQuery DataFrames und Pandas
ARRAY pandas.ArrowDtype(pa.list_())
BOOL pandas.BooleanDtype()
DATE pandas.ArrowDtype(pa.date32())
DATETIME pandas.ArrowDtype(pa.timestamp("us"))
FLOAT64 pandas.Float64Dtype()
GEOGRAPHY

geopandas.array.GeometryDtype()

Unterstützt von "to_pandas() only"

INT64 pandas.Int64Dtype()
STRING pandas.StringDtype(storage="pyarrow")
STRUCT pandas.ArrowDtype(pa.struct())
TIME pandas.ArrowDtype(pa.time64("us"))
TIMESTAMP pandas.ArrowDtype(pa.timestamp("us", tz="UTC"))

Die folgenden BigQuery-Datentypen werden von BigQuery DataFrames nicht unterstützt:

  • NUMERIC

  • BIGNUMERIC

  • INTERVAL

  • RANGE

  • JSON

Alle anderen BigQuery-Datentypen werden als Objekttyp angezeigt.

Teilsortiermodus

BigQuery DataFrames bietet eine Sortiermodus-Funktion. Legen Sie ordering_mode auf partial fest, um effizientere Abfragen zu generieren.

Der partial-Sortiermodus unterscheidet sich vom Standardmodus strict, bei dem eine Gesamtsortierung aller Zeilen erstellt wird. Durch eine Gesamtsortierung sind BigQuery DataFrames besser mit Pandas kompatibel, da mit der Eigenschaft DataFrame.iloc ein sortierungsbasierter Zugriff auf Zeilen möglich ist. Aufgrund der Gesamtsortierung und des standardmäßigen sequenziellen Index über diese Sortierung wird die Anzahl der gescannten Byte jedoch weder durch Spaltenfilter noch durch Zeilenfilter reduziert, es sei denn, diese Filter werden als Parameter auf die Funktionen read_gbq und read_gbq_table angewendet. Um eine Gesamtsortierung aller Zeilen im DataFrame bereitzustellen, wird in BigQuery DataFrames ein Hash aller Zeilen erstellt. Dies kann zu einem vollständigen Datenscan führen, bei dem Zeilen- und Spaltenfilter ignoriert werden.

Wenn Sie die Eigenschaft ordering_mode auf partial festlegen, wird in BigQuery DataFrames keine Gesamtsortierung für alle Zeilen generiert. Im Teilsortiermodus werden ebenfalls Funktionen deaktiviert, die eine vollständige Sortierung aller Zeilen erfordern, z. B. das DataFrame.iloc-Attribut. Im Teilsortiermodus wird DefaultIndexKind auf einen Nullindex anstelle eines sequenziellen Index über die Sortierung gesetzt.

Wenn Sie einen DataFrame filtern, für den ordering_mode auf partial festgelegt ist, muss BigQuery DataFrames nicht mehr berechnen, welche Zeilen im sequenziellen Index fehlen. Dadurch werden schnellere und effizientere Abfragen generiert. Die BigQuery DataFrames API ist weiterhin pandas-ähnlich, genau wie die Standardfunktion mit dem strengen Sortiermodus. Der Teilsortiermodus unterscheidet sich jedoch vom üblichen Pandas-Verhalten. Beispielsweise werden im Teilsortiermodus keine impliziten Joins nach Index ausgeführt.

Sowohl beim Teil- als auch beim strengen Sortiermodus zahlen Sie für die von Ihnen verwendeten BigQuery-Ressourcen. Bei der Arbeit mit großen geclusterten und/oder partitionierten Tabellen können Sie jedoch Kosten sparen, wenn Sie den Teilsortiermodus verwenden, da Zeilenfilter für Cluster- und Partitionsspalten die Anzahl der verarbeiteten Bytes reduzieren.

Nutzung

Wenn Sie die Teilsortierung verwenden möchten, setzen Sie ordering_mode auf partial, bevor Sie andere Vorgänge mit BigQuery DataFrames ausführen, wie im folgenden Codebeispiel gezeigt:

import bigframes.pandas as bdp

bpd.options.bigquery.ordering_mode = "partial"

Da es im Teilsortiermodus keinen sequenziellen Index gibt, werden nicht zusammenhängende BigQuery-DataFrames nicht implizit zusammengeführt. Stattdessen müssen Sie die Methode DataFrame.merge explizit aufrufen, um zwei BigQuery-DataFrames zu verknüpfen, die aus verschiedenen Tabellenausdrücken stammen.

Die Funktionen Series.unique() und Series.drop_duplicates() sind mit dem Teilsortiermodus nicht kompatibel. Verwenden Sie stattdessen die Methode groupby, um eindeutige Werte auf diese Weise zu ermitteln:

unique_col = df.groupby(["column"], as_index=False).size().drop(columns="size")

Im Teilsortiermodus ist nicht garantiert, dass die Ausgabe der Funktionen DataFrame.head(n) und Series.head(n) bei allen Aufrufen idempotent ist. Wenn Sie eine kleine, beliebige Stichprobe der Daten herunterladen möchten, verwenden Sie die Methoden DataFrame.peek() oder Series.peek().

Eine detaillierte Anleitung zur Verwendung des Attributs ordering_mode = "partial" finden Sie in diesem BigQuery DataFrames-Notebook, in dem der Teilsortiermodus demonstriert wird.

Fehlerbehebung

Fehler: Sortierung erforderlich

Für einige Funktionen ist eine Sortierung erforderlich, z. B. für die Funktionen DataFrame.head() und DataFrame.iloc. Eine Liste der Funktionen, für die eine Sortierung erforderlich ist, finden Sie in der Spalte Sortierung erforderlich in Unterstützte pandas APIs.

Wenn für das Objekt keine Sortierung festgelegt ist, schlägt der Vorgang fehl und es wird eine OrderRequiredError-Meldung wie die folgende ausgegeben:

OrderRequiredError: Op iloc requires an ordering. Use .sort_values or .sort_index to provide an ordering.

Wie in der Fehlermeldung beschrieben, können Sie mit der Methode DataFrame.sort_values() eine Sortierung nach einer oder mehreren Spalten angeben. Andere Vorgänge wie DataFrame.groupby() sorgen implizit für eine Gesamtsortierung der Gruppe nach Schlüsseln.

Wenn die Sortierung nicht als vollständig stabile Gesamtsortierung für alle Zeilen ermittelt werden kann, werden Sie bei nachfolgenden Vorgängen möglicherweise mit einer AmbiguousWindowWarning-Nachricht wie der folgenden gewarnt:

AmbiguousWindowWarning: Window ordering may be ambiguous, this can cause unstable results.

Wenn Ihre Arbeitslast nicht deterministische Ergebnisse zulassen kann oder Sie manuell prüfen können, ob die von Ihnen angegebene Sortierung eine Gesamtsortierung ist, können Sie die AmbiguousWindowWarning-Nachricht so filtern:

import warnings

import bigframes.exceptions

warnings.simplefilter("ignore", category=bigframes.exceptions.AmbiguousWindowWarning)

Fehler beim Nullindex

Für einige Funktionen ist ein Index erforderlich, z. B. für die Eigenschaften DataFrame.unstack() und Series.interpolate(). Eine Liste der Funktionen, für die ein Index erforderlich ist, finden Sie in der Spalte Index erforderlich in Unterstützte pandas APIs.

Wenn Sie einen Vorgang verwenden, für den ein Index mit dem Teilsortiermodus erforderlich ist, wird eine NullIndexError-Nachricht wie die folgende ausgegeben:

NullIndexError: DataFrame cannot perform interpolate as it has no index. Set an index using set_index.

Wie in der Fehlermeldung beschrieben, können Sie mit der Methode DataFrame.set_index() einen Index angeben, um nach einer oder mehreren Spalten zu sortieren. Andere Vorgänge wie DataFrame.groupby() liefern implizit einen Index über die Gruppe nach Schlüsseln, es sei denn, der Parameter as_index=False ist festgelegt.

Bibliothek bigframes.pandas verwenden

Die bigframes.pandas-Bibliothek bietet eine pandas-ähnliche API, mit der Sie Daten in BigQuery analysieren und bearbeiten können. Die bigframes.pandas API ist skalierbar, um die Verarbeitung von Terabyte an BigQuery-Daten zu unterstützen. Sie verwendet die BigQuery-Abfrage-Engine für Berechnungen.
Die bigframes.pandas API bietet folgende Funktionen:

Eingabe und Ausgabe

Sie können auf Daten aus verschiedenen Quellen, einschließlich lokaler CSV-Dateien, Cloud Storage-Dateien, pandas-DataFrames, BigQuery-Modelle und BigQuery-Funktionen, zugreifen und sie in ein BigQuery DataFrames-DataFrame laden. Sie können BigQuery-Tabellen auch aus BigQuery DataFrames erstellen.

Datenmanipulation

Für Ihre Entwicklung können Sie Python anstelle von SQL verwenden. Sie können alle BigQuery-Datenmanipulationen in Python entwickeln, sodass Sie nicht zwischen Sprachen wechseln und SQL-Anweisungen als Textstrings erfassen müssen. Die bigframes.pandas API bietet über 750 pandas-Funktionen.

Python-Umgebung und Visualisierungen

Die bigframes.pandas API ist ein Gateway zum vollständigen Python-System an Tools. Die API unterstützt erweiterte statistische Vorgänge und Sie können die von BigQuery DataFrames generierten Aggregationen visualisieren. Sie können auch von einem BigQuery DataFrames-DataFrame zu einem pandas-DataFrame mit integrierten Stichprobenvorgängen wechseln.

Benutzerdefinierte Python-Funktionen

Mit BigQuery DataFrames können Sie Ihre benutzerdefinierten skalaren Funktionen in BigQuery-Remote-Funktionen umwandeln. Wenn Sie eine Remote-Funktion in BigQuery DataFrames erstellen, geschieht Folgendes:

  1. Eine Cloud Run Functions-Funktion (2. Generation).

  2. Eine BigQuery-Verbindung. Standardmäßig wird eine Verbindung des Namens 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 wird die IAM-Rolle „Cloud Run Invoker” (roles/run.invoker) zugewiesen.

  3. Eine BigQuery-Remote-Funktion, die die Cloud Functions-Funktion (1) über die BigQuery-Verbindung verwendet (2).

Ein Beispiel finden Sie unter Remote-Funktion erstellen.

BigQuery-Verbindungen werden am selben Standort wie die BigQuery DataFrames-Sitzung erstellt. Dabei wird der Name verwendet, den Sie in der Definition der benutzerdefinierten Funktion angeben. So rufen Sie Verbindungen auf und verwalten sie:

  1. Rufen Sie BigQuery in der Google Cloud Console auf.

  2. Wählen Sie das Projekt aus, in dem Sie die Remote-Funktion erstellt haben.

  3. Maximieren Sie im Explorer-Bereich dieses Projekt und dann "Externe Verbindungen".

BigQuery-Remote-Funktionen werden im von Ihnen angegebenen Dataset oder in einem anonymen Dataset erstellt, einer Art verborgenen Dataset. Wenn Sie bei der Erstellung einer Remote-Funktion keinen Namen festlegen, wird in BigQuery DataFrames ein Standardname mit dem Präfix bigframes verwendet. So rufen Sie Remote-Funktionen auf, die in einem vom Nutzer angegebenen Dataset erstellt wurden, und verwalten sie:

  1. Rufen Sie BigQuery in der Google Cloud Console auf.

  2. Wählen Sie das Projekt aus, in dem Sie die Remote-Funktion erstellt haben.

  3. Maximieren Sie im Explorer-Bereich das Projekt und dann das Dataset, in dem Sie die Remote-Funktion erstellt haben, und maximieren Sie dann „Abläufe“.

Verwenden Sie zum Anzeigen und Verwalten von Cloud Run Functions-Funktionen die Seite Funktionen und wählen Sie mithilfe der Projektauswahl das Projekt aus, in dem Sie die Funktion erstellt haben. Um die Identifizierung zu erleichtern, ist den Namen der Funktionen, die von BigQuery DataFrames erstellt wurden, das Präfix bigframes vorangestellt.

Sie können unbenannte BigQuery-Remote-Funktionen und die zugehörigen Cloud Run Functions-Funktionen auf folgende Arten bereinigen:

  • Verwenden Sie für BigQuery DataFrames session die Option session.close().
  • Verwenden Sie für die Standard-BigQuery DataFrames-Sitzung bigframes.pandas.close_session().
  • Verwenden Sie für eine frühere Sitzung mit session_id bigframes.pandas.clean_up_by_session_id(session_id).

Voraussetzungen

Damit Sie die Remote-Funktionen von BigQuery DataFrames verwenden können, müssen Sie die folgenden APIs aktivieren:

Wenn Sie die Remote-Funktionen von BigQuery DataFrames verwenden möchten, benötigen Sie im Projekt die folgenden IAM-Rollen:

  • BigQuery-Dateneditor (roles/bigquery.dataEditor)

  • BigQuery Connection Admin (roles/bigquery.connectionAdmin)

  • Cloud Functions Developer (roles/cloudfunctions.developer)

  • Service Account User (roles/iam.serviceAccountUser)

  • Storage-Objekt-Betrachter (roles/storage.objectViewer)

  • Projekt-IAM-Administrator (roles/resourcemanager.projectIamAdmin), wenn die BigQuery-Standardverbindung verwendet wird, oder Browser (Rollen/Browser), wenn eine vorkonfigurierte Verbindung verwendet wird. Diese Anforderung kann vermieden werden, indem die Option bigframes.pandas.options.bigquery.skip_bq_connection_check auf True gesetzt wird. In diesem Fall wird die Verbindung (Standard 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, achten Sie darauf, dass die Verbindung am richtigen Standort erstellt wird und das zugehörige Dienstkonto die Rolle "Cloud Run-Aufrufer" (roles/run.invoker ) für das Projekt hat.

Beschränkungen

  • Es dauert etwa 90 Sekunden, bis Remote-Funktionen nach ihrer Erstellung verfügbar sind.

  • Einfache Änderungen im Notebook, wie das Einfügen einer neuen Zelle oder das Umbenennen einer Variablen, kann dazu führen, dass die Remote-Funktion neu erstellt wird, auch wenn diese Änderungen keinen Bezug auf den Remote-Funktionscode haben.

  • BigQuery DataFrames unterscheidet keine personenbezogenen Daten, die Sie in den Code der Remote-Funktion aufnehmen. Der Remote-Funktionscode ist als undurchsichtiges Feld serialisiert, um ihn als Cloud Run Functions-Funktion bereitzustellen.

  • Cloud Run Functions-Funktionen (2. Generation), BigQuery-Verbindungen und von BigQuery DataFrames erstellte BigQuery-Remote-Funktionen bleiben in Google Cloud erhalten. Wenn Sie diese Ressourcen nicht behalten möchten, müssen Sie sie separat mit einer entsprechenden Cloud Run Functions- oder BigQuery-Oberfläche löschen.

  • Ein Projekt kann bis zu 1.000 Cloud Run Functions-Funktionen (2. Generation) gleichzeitig haben. Weitere Informationen finden Sie unter Cloud Run Functions-Kontingente für alle Limits.

Beispiele für bigframes.pandas

Die folgenden Beispiele zeigen gängige Methoden zur Verwendung von bigframes.pandas.

Daten aus einer BigQuery-Tabelle oder -Abfrage laden

Sie können einen DataFrame aus einer BigQuery-Tabelle oder -Abfrage so erstellen:

# Create a DataFrame from a BigQuery table:
import bigframes.pandas as bpd

query_or_table = "bigquery-public-data.ml_datasets.penguins"
bq_df = bpd.read_gbq(query_or_table)

Daten aus einer CSV-Datei laden

Sie können einen DataFrame aus einer lokalen oder Cloud Storage-CSV-Datei so erstellen:

import bigframes.pandas as bpd

filepath_or_buffer = "gs://cloud-samples-data/bigquery/us-states/us-states.csv"
df_from_gcs = bpd.read_csv(filepath_or_buffer)
# Display the first few rows of the DataFrame:
df_from_gcs.head()

Daten prüfen und bearbeiten

Sie können bigframes.pandas für Datenprüfungs- und Berechnungsvorgänge verwenden.
Das folgende Codebeispiel zeigt, wie Sie mit bigframes.pandas die Spalte body_mass_g prüfen, den Mittelwert body_mass berechnen und den Mittelwert body_mass nach species berechnen:

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)

# Inspect one of the columns (or series) of the DataFrame:
bq_df["body_mass_g"]

# Compute the mean of this series:
average_body_mass = bq_df["body_mass_g"].mean()
print(f"average_body_mass: {average_body_mass}")

# Find the heaviest species using the groupby operation to calculate the
# mean body_mass_g:
(
    bq_df["body_mass_g"]
    .groupby(by=bq_df["species"])
    .mean()
    .sort_values(ascending=False)
    .head(10)
)

Bibliothek bigframes.ml verwenden

Mit den ML-Funktionen in BigQuery DataFrames können Sie Daten vorverarbeiten und Modelle mit diesen Daten trainieren. Diese Aktionen lassen sich auch für die Erstellung von Datenpipelines aneinanderketten.

ML-Speicherorte

bigframes.ml 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) mithilfe derModul bigframes.ml.preprocessing und dieModul bigframes.ml.compose vorzubereiten. BigQuery DataFrames bietet die folgenden Transformationen:

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

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

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

  • Verwenden Sie die MinMaxScaler-Klasse im Modul bigframes.ml.preprocessing, 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 Modul bigframes.ml.preprocessing, um kategoriale Werte in ein numerisches Format umzuwandeln.

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

Modelle trainieren

Erstellen Sie Estimatoren zum Trainieren von Modellen in BigQuery DataFrames.

Clustering-Modelle

Erstellen Sie Estimatoren für Clustering-Modelle mit dem bigframes.ml.cluster-Modul.

  • Verwenden Sie die KMeans-Klasse, um K-Means-Clustering-Modelle zu erstellen. Verwenden Sie diese Modelle für die Datensegmentierung. Beispiel: Identifizierung von Kundensegmenten. K-Means ist ein unüberwachtes Lernen, sodass das Modelltraining keine Labels oder aufgeteilte Daten für das Training oder die Evaluation benötigt.

Mit dem Modul bigframes.ml.cluster können Sie Estimators 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

Erstellen Sie Estimatoren für Zerlegungsmodelle mit dem bigframes.ml.decomposition-Modul.

  • 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. Dadurch 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

Erstellen Sie Estimatoren für Ensemble-Modelle mit dem bigframes.ml.ensemble-Modul.

  • Verwenden Sie die RandomForestClassifier-Klasse, um Random Forest-Klassifikatormodelle zu erstellen. Verwenden Sie diese Modelle, um mehrere Entscheidungsmethoden 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 Entscheidungsmethoden 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 Entscheidungsmethoden für Lernmethoden für die Regression additiv zu erstellen.

Prognosemodelle

Erstellen Sie Estimatoren für Prognosemodelle mit dem bigframes.ml.forecasting-Modul.

  • Verwenden Sie die ARIMAPlus-Klasse, um Zeitreihenprognosemodelle zu erstellen.

Importierte Modelle

Erstellen Sie Estimatoren für importierte Modelle mit dem bigframes.ml.imported-Modul.

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. Beispiel: 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 bigframes.ml, um Folgendes zu tun:

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

Erstellen Sie Estimatoren für LLMs mithilfe des bigframes.ml.llm-Moduls.

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

  • Verwenden Sie die PaLM2TextGenerator-Klasse, um PaLM2-Textgenerator-Modelle zu erstellen. Verwenden Sie diese Modelle für Aufgaben zur Textgenerierung.

  • Verwenden Sie die PaLM2TextEmbeddingGenerator-Klasse, um Modelle für PaLM2-Texteinbettungen zu erstellen. Verwenden Sie diese Modelle für Aufgaben zur Generierung von Texteinbettungen.

Mit dem Modul bigframes.ml.llm können Sie Estimators für Remote-Großsprachmodelle (LLMs) erstellen.
Im folgenden Codebeispiel wird gezeigt, wie diebigframes.ml.llm GeminiTextGenerator-Klasse verwendet wird, um ein Gemini-Modell für die Codegenerierung zu erstellen:

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)

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-Remote-Modelle (bigframes.ml.remote oder bigframes.ml.llm) zu verwenden, müssen Sie die folgenden APIs aktivieren:

Sie benötigen außerdem die folgenden IAM-Rollen im Projekt:

  • BigQuery Connection Admin (roles/bigquery.connectionAdmin)
  • Projekt-IAM-Administrator (roles/resourcemanager.projectIamAdmin), wenn die BigQuery-Standardverbindung verwendet wird, oder Browser (Rollen/Browser), wenn eine vorkonfigurierte Verbindung verwendet wird. Diese Anforderung kann vermieden werden, indem die Option bigframes.pandas.options.bigquery.skip_bq_connection_check auf True gesetzt wird. In diesem Fall wird die Verbindung (Standard 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, achten Sie darauf, dass die Verbindung am richtigen Standort erstellt wird und das Dienstkonto die Rolle "Vertex AI-Nutzer" roles/aiplatform.user für das Projekt hat.

Durch das Erstellen eines Remote-Modells in BigQuery DataFrames wird eine BigQuery-Verbindung erstellt. Standardmäßig wird eine Verbindung des Namens 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 IAM-Rolle Vertex AI-Nutzer (roles/aiplatform.user) zugewiesen.

Pipelines erstellen

Erstellen Sie ML-Pipelines mit dem bigframes.ml.pipeline-Modul. 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 Pipelineklasse, um eine Pipeline von Transformationen mit einem endgültigen Estimator zu erstellen.

Nächste Schritte