Criar um conjunto de dados tabular da Vertex AI

O modelo que você criar mais adiante neste tutorial exige um conjunto de dados para treiná-lo. Os dados usados neste tutorial são um conjunto de dados disponível publicamente que contém detalhes sobre três espécies de pinguins. Os dados a seguir são usados para prever qual das três espécies um pinguim é.

  • island: ilha em que uma espécie de pinguim é encontrada.
  • culmen_length_mm: o comprimento da crista ao longo da parte superior do bico de um pinguim.
  • culmen_depth_mm: a altura do bico de um pinguim.
  • flipper_length_mm: o comprimento da asa em forma de nadadeira de um pinguim.
  • body_mass_g: a massa do corpo de um pinguim.
  • sex: o sexo do pinguim.

Fazer o download, pré-processamento e divisão dos dados

Nesta seção, você faz o download do conjunto de dados do BigQuery disponível publicamente e prepara os dados. Para preparar os dados, faça o seguinte:

  • Converter atributos categóricos (os que são descritos com uma string em vez de um número) em dados numéricos. Por exemplo, converta os nomes dos três tipos de pinguins em valores numéricos 0, 1 e 2.

  • Remova todas as colunas do conjunto de dados que não são usadas.

  • Remova as linhas que não podem ser usadas.

  • Divida os dados em dois conjuntos distintos. Cada conjunto de dados é armazenado em um objeto pandas DataFrame.

    • O df_train DataFrame contém dados usados para treinar seu modelo.

    • O df_for_prediction DataFrame contém dados usados para gerar previsões.

Depois de processar os dados, o código mapeia os valores numéricos das três colunas categóricas para os valores de string e, em seguida, os imprime para que você possa saber como são os dados.

Para fazer o download e processar seus dados, execute o seguinte código no seu 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)

Veja a seguir os valores mapeados impressos para características não 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'}

Os primeiros três valores são as ilhas que um pinguim pode habitar. Os três segundos valores são importantes porque mapeiam para as previsões que você recebe no final deste tutorial. A terceira linha mostra os mapas de características de sexo FEMALE para 0 e MALE os mapas de características de sexo para 1.

Criar um conjunto de dados tabular para treinar seu modelo

Na etapa anterior, você fez o download e processou seus dados. Nesta etapa, você carrega os dados armazenados no df_train DataFrame em um conjunto de dados do BigQuery. Em seguida, usa o conjunto de dados do BigQuery para criar um conjunto de dados tabular da Vertex AI. Esse conjunto de dados tabular é usado para treinar seu modelo. Para mais informações, consulte Usar conjuntos de dados gerenciados.

Criar um conjunto de dados do BigQuery

Para criar um conjunto de dados do BigQuery usado para gerar um conjunto de dados da Vertex AI, execute o código a seguir. O comando create_dataset retorna um novo DataSet do 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)

Criar um conjunto de dados tabular da Vertex AI

Para converter seu conjunto de dados do BigQuery em um conjunto de dados tabular da Vertex AI, execute o código a seguir. Ignore o aviso sobre o número necessário de linhas para treinar usando dados tabulares. Como o objetivo deste tutorial é mostrar rapidamente como receber previsões, um conjunto relativamente pequeno de dados é usado para mostrar como gerar previsões. Em um cenário real, você quer pelo menos 1.000 linhas em um conjunto de dados tabular. O comando create_from_dataframe retorna um TabularDataset da 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",
)

Agora você tem o conjunto de dados tabular da Vertex AI usado para treinar seu modelo.

(Opcional) Acessar o conjunto de dados público no BigQuery

Se você quiser acessar os dados públicos usados neste tutorial, é possível abri-los no BigQuery.

  1. Em Pesquisar no Google Cloud, insira "BigQuery" e pressione "Enter".

  2. Nos resultados da pesquisa, clique em "BigQuery".

  3. Na janela Explorer, expanda bigquery-public-data.

  4. Em bigquery-public-data, expanda ml_datasets e clique em penguins.

  5. Clique em qualquer um dos nomes em Nome do campo para acessar os dados dele.

Acessar conjunto de dados públicos de pinguins.