创建 Vertex AI 表格式数据集

本教程稍后创建的模型需要数据集来训练。本教程使用的数据是公开提供的数据集,其中包含三种企鹅的详细信息。以下数据用于预测企鹅属于三个种类中的哪一种。

  • island - 发现某个企鹅物种的岛屿。
  • culmen_length_mm - 企鹅喙顶部脊的长度。
  • culmen_depth_mm - 企鹅喙的高度。
  • flipper_length_mm - 企鹅鳍状翅膀的长度。
  • body_mass_g - 企鹅的体重。
  • sex - 企鹅的性别。

下载、预处理和拆分数据

在本部分中,您将下载公开可用的 BigQuery 数据集并准备其数据。如需准备数据,请执行以下操作:

  • 将分类特征(使用字符串而不是数字来描述的特征)转换为数字数据。例如,将三种企鹅类型的名称转换为数值 012

  • 移除数据集中未使用的所有列。

  • 移除所有无法使用的行。

  • 将数据拆分为两组不同的数据。每组数据都存储在一个熊猫 DataFrame 对象中。

    • df_train DataFrame 包含用于训练模型的数据。

    • df_for_prediction DataFrame 包含用于生成预测的数据。

处理完数据后,代码会将三个分类列的数值映射到其字符串值,然后输出这些值,以便您可以查看数据的形式。

如需下载和处理数据,请在笔记本中运行以下代码:

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)

以下是针对非数字特征输出的映射值:

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

前三个值是企鹅居住的岛屿。接下来的三个值很重要,因为它们映射到您在本教程结束时收到的预测。第三行显示 FEMALE 性别特征映射到 0,而 MALE 性别特征映射到 1

创建用于训练模型的表格式数据集

在上一步,您下载并处理了数据。在此步骤中,您需要将存储在 df_train DataFrame 中的数据加载到 BigQuery 数据集中。然后,您可以使用 BigQuery 数据集来创建 Vertex AI 表格式数据集。此表格式数据集用于训练模型。如需了解详情,请参阅使用托管式数据集

创建 BigQuery 数据集

如需创建用于创建 Vertex AI 数据集的 BigQuery 数据集,请运行以下代码。create_dataset 命令会返回一个新的 BigQuery DataSet

# 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)

创建 Vertex AI 表格式数据集

如需将 BigQuery 数据集转换为 Vertex AI 表格数据集,请运行以下代码。您可以忽略有关使用表格式数据进行训练所需的行数的警告。由于本教程的目的是快速向您展示如何获取预测结果,因此我们使用了一组相对较小的数据来向您展示如何生成预测结果。在实际使用场景中,表格数据集中至少要有 1000 行。create_from_dataframe 命令会返回 Vertex AI TabularDataset

# 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",
)

现在,您已拥有用于训练模型的 Vertex AI 表格式数据集。

(可选)在 BigQuery 中查看公共数据集

如果您想查看本教程中使用的公共数据,可以在 BigQuery 中打开。

  1. 在 Google Cloud 的搜索中,输入 BigQuery,然后按回车键。

  2. 在搜索结果中,点击 BigQuery

  3. 浏览器窗口中,展开 bigquery-public-data

  4. bigquery-public-data 下,展开 ml_datasets,然后点击企鹅

  5. 点击字段名称下任一名称可查看该字段的数据。

查看企鹅公共数据集。