Créer un ensemble de données tabulaire Vertex AI

Le modèle que vous allez créer plus loin dans ce tutoriel nécessite un ensemble de données pour l'entraîner. Les données utilisées par ce tutoriel sont un ensemble de données accessible au public qui contient des informations sur trois espèces de manchots. Les données suivantes sont utilisées pour prédire à quelle espèce appartient un manchot parmi les trois.

  • island : île où se trouve une certaine espèce de manchot.
  • culmen_length_mm : longueur de la crête le long de la partie supérieure du bec d'un manchot.
  • culmen_depth_mm : hauteur du bec d'un manchot.
  • flipper_length_mm : longueur de l'aile (nageoire) d'un manchot.
  • body_mass_g : masse corporelle d'un manchot.
  • sex : genre du manchot.

Télécharger, prétraiter et diviser les données

Dans cette section, vous allez télécharger l'ensemble de données BigQuery accessible au public et préparer ses données. Pour préparer les données, vous allez :

  • Convertir les caractéristiques catégorielles (caractéristiques décrites avec une chaîne plutôt qu'un nombre) en données numériques. Par exemple, vous allez convertir les noms des trois types de manchots en valeurs numériques 0, 1 et 2.

  • Supprimer toutes les colonnes de l'ensemble de données qui ne sont pas utilisées.

  • Supprimer toutes les lignes qui ne peuvent pas être utilisées.

  • Diviser les données en deux ensembles de données distincts. Chaque ensemble de données est stocké dans un objet pandas DataFrame.

    • Le DataFrame df_train contient les données utilisées pour entraîner le modèle.

    • Le DataFrame df_for_prediction contient des données utilisées pour générer les prédictions.

Après avoir traité les données, le code mappe les valeurs numériques des trois colonnes catégorielles sur leurs valeurs de chaîne, puis les imprime à l'écran pour vous permettre de voir à quoi ressemblent les données.

Pour télécharger et traiter vos données, exécutez le code suivant dans votre 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)

Voici les valeurs mappées imprimées pour les caractéristiques qui ne sont pas numériques :

{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'}

Les trois premières valeurs sont les îles où un manchot peut habiter. Les trois valeurs suivantes sont importantes, car elles correspondent aux prédictions que vous recevrez à la fin de ce tutoriel. La troisième ligne montre que la caractéristique du genre FEMALE correspond à 0 et que la caractéristique du genre MALE correspond à 1.

Créer un ensemble de données tabulaire pour entraîner votre modèle

À l'étape précédente, vous avez téléchargé et traité vos données. Au cours de cette étape, vous allez charger les données stockées dans votre DataFrame df_train dans un ensemble de données BigQuery. Vous allez ensuite utiliser l'ensemble de données BigQuery pour créer un ensemble de données tabulaire Vertex AI. Cet ensemble de données tabulaire est utilisé pour entraîner le modèle. Pour en savoir plus, consultez la section Utiliser des ensembles de données gérés.

Créer un ensemble de données BigQuery

Pour créer l'ensemble de données BigQuery qui servira à créer un ensemble de données Vertex AI, exécutez le code suivant. La commande create_dataset renvoie un nouveau DataSet 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)

Créer un ensemble de données tabulaire Vertex AI

Pour convertir votre ensemble de données BigQuery en ensemble de données tabulaire Vertex AI, exécutez le code suivant. Vous pouvez ignorer l'avertissement concernant le nombre requis de lignes à entraîner à l'aide des données tabulaires. L'objectif de ce tutoriel étant de vous montrer rapidement comment obtenir des prédictions, un ensemble de données relativement petit est utilisé pour vous montrer comment générer des prédictions. Dans un scénario réel, il est préférable d'avoir au moins 1 000 lignes dans un ensemble de données tabulaire. La commande create_from_dataframe renvoie un TabularDataset 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",
)

Vous avez maintenant l'ensemble de données tabulaire Vertex AI utilisé pour entraîner votre modèle.

(Facultatif) Afficher l'ensemble de données public dans BigQuery

Si vous souhaitez afficher les données publiques utilisées dans ce tutoriel, vous pouvez les ouvrir dans BigQuery.

  1. Dans Search (Rechercher) dans Google Cloud, saisissez BigQuery, puis appuyez sur la touche Entrée.

  2. Dans les résultats de recherche, cliquez sur BigQuery.

  3. Dans la fenêtre Explorer (Explorateur), développez bigquery-public-data.

  4. Sous bigquery-public-data, développez ml_datasets, puis cliquez sur penguins (manchots).

  5. Cliquez sur l'un des noms sous Field name (Nom du champ) pour afficher les données de ce champ.

Affichage de l'ensemble de données public consacré aux manchots.