Crea un conjunto de datos tabular de Vertex AI

El modelo que crearás más adelante en este instructivo requiere un conjunto de datos para entrenarlo. Los datos que se usan en este instructivo son un conjunto de datos disponible públicamente que contiene detalles sobre tres especies de pingüinos. Los siguientes datos se utilizan para predecir a cuál de las tres especies pertenece un pingüino.

  • island: Es la isla donde se encuentra una especie de pingüino.
  • culmen_length_mm: Es la longitud de la crestas a lo largo del pico de un pingüino.
  • culmen_depth_mm: Es la altura del pico de un pingüino.
  • flipper_length_mm: Es la longitud del ala similar a las aletas de un pingüino.
  • body_mass_g: Es la masa del cuerpo de un pingüino.
  • sex: Es el sexo del pingüino.

Descarga, procesa previamente y divide los datos

En esta sección, descargarás el conjunto de datos de BigQuery disponible a nivel público y prepararás sus datos. Para preparar los datos, haz lo siguiente:

  • Convierte atributos categóricos (atributos descritos con una cadena en lugar de un número) en datos numéricos. Por ejemplo, debes convertir los nombres de los tres tipos de pingüinos en los valores numéricos 0, 1 y 2.

  • Quita las columnas del conjunto de datos que no se usen.

  • Quita las filas que no se puedan usar.

  • Divide los datos en dos conjuntos distintos de datos. Cada conjunto de datos se almacena en un objeto DataFrame de Pandas.

    • El df_train DataFrame contiene datos que se usaron para entrenar tu modelo.

    • El df_for_prediction DataFrame contiene datos que se usaron para generar predicciones.

Después de procesar los datos, el código asigna los tres valores numéricos de las tres columnas categóricas a sus valores de cadena y, luego, los imprime para que puedas ver cómo se ven los datos.

Para descargar y procesar tus datos, ejecuta el siguiente código en el notebook:

import numpy as np
import pandas as pd

LABEL_COLUMN = "species"

# Define the BigQuery source dataset
BQ_SOURCE = "bigquery-public-data.ml_datasets.penguins"

# Define NA values
NA_VALUES = ["NA", "."]

# Download a table
table = bq_client.get_table(BQ_SOURCE)
df = bq_client.list_rows(table).to_dataframe()

# Drop unusable rows
df = df.replace(to_replace=NA_VALUES, value=np.NaN).dropna()

# Convert categorical columns to numeric
df["island"], island_values = pd.factorize(df["island"])
df["species"], species_values = pd.factorize(df["species"])
df["sex"], sex_values = pd.factorize(df["sex"])

# Split into a training and holdout dataset
df_train = df.sample(frac=0.8, random_state=100)
df_for_prediction = df[~df.index.isin(df_train.index)]

# Map numeric values to string values
index_to_island = dict(enumerate(island_values))
index_to_species = dict(enumerate(species_values))
index_to_sex = dict(enumerate(sex_values))

# View the mapped island, species, and sex data
print(index_to_island)
print(index_to_species)
print(index_to_sex)

A continuación, se muestran los valores asignados impresos para las características que no son numéricas:

{0: 'Dream', 1: 'Biscoe', 2: 'Torgersen'}
{0: 'Adelie Penguin (Pygoscelis adeliae)', 1: 'Chinstrap penguin (Pygoscelis antarctica)', 2: 'Gentoo penguin (Pygoscelis papua)'}
{0: 'FEMALE', 1: 'MALE'}

Los tres primeros valores son las islas en la que un pingüino podría vivir. Los segundos tres valores son importantes porque se asignan a las predicciones que recibes al final de este instructivo. La tercera fila muestra la asigación de característica del sexo FEMALE a 0 y la característica del sexo MALE a 1.

Crea un conjunto de datos tabular para entrenar tu modelo

En el paso anterior, descargaste y procesaste tus datos. En este paso, debes cargar los datos almacenados en tu DataFrame de df_train en un conjunto de datos de BigQuery. Luego, usa el conjunto de datos de BigQuery para crear un conjunto de datos tabular de Vertex AI. Este conjunto de datos tabular se usa para entrenar tu modelo. Para obtener más información, consulta Usa conjuntos de datos administrados.

Crea un conjunto de datos de BigQuery

Para crear el conjunto de datos de BigQuery que se usa para crear un conjunto de datos de Vertex AI, ejecuta el siguiente código. El comando create_dataset muestra un nuevo DataSet de BigQuery.

# Create a BigQuery dataset
bq_dataset_id = f"{project_id}.dataset_id_unique"
bq_dataset = bigquery.Dataset(bq_dataset_id)
bq_client.create_dataset(bq_dataset, exists_ok=True)

Crea un conjunto de datos tabular de Vertex AI

Para convertir tu conjunto de datos de BigQuery en un conjunto de datos tabular de Vertex AI, ejecuta el siguiente código. Puedes ignorar la advertencia sobre la cantidad requerida de filas para entrenar con datos tabulares. Debido a que el propósito de este instructivo es mostrarte con rapidez cómo obtener predicciones, se usa un conjunto de datos relativamente pequeño para mostrarte cómo generar predicciones. En una situación real, deseas al menos 1,000 filas en un conjunto de datos tabular. El comando create_from_dataframe muestra un TabularDataset de Vertex AI.

# Create a Vertex AI tabular dataset
dataset = aiplatform.TabularDataset.create_from_dataframe(
    df_source=df_train,
    staging_path=f"bq://{bq_dataset_id}.table-unique",
    display_name="sample-penguins",
)

Ahora tienes el conjunto de datos tabular de Vertex AI que se usa para entrenar tu modelo.

Visualiza el conjunto de datos públicos en BigQuery (opcional)

Si quieres ver los datos públicos que se usaron en este instructivo, puedes abrirlos en BigQuery.

  1. En Buscar en Google Cloud, ingresa BigQuery y, luego, presiona Intro.

  2. En los resultados de la búsqueda, haz clic en BigQuery.

  3. En la ventana Explorer, expande Explorer.

  4. En bigquery-public-data, expande bigquery-public-data y, luego, haz clic en bigquery-public-data.

  5. Haz clic en cualquiera de los nombres en Nombre del campo para ver los datos de ese campo.

Visualiza el conjunto de datos públicos de pingüinos.