数据类型

本页面介绍可以导入 AutoML Tables 数据集的数据类型,以及这些类型如何映射到 BigQuery 或 CSV。

简介

导入训练数据时,AutoML Tables 会根据输入数据的原生类型和该列中的值为每列建议数据类型。列的数据类型很重要,因为它会影响该列在训练模型时的使用方式。导入数据后,您应检查每一列以确保 AutoML Tables 选择的是正确的数据类型。

创建模型时,数据集将转换为一系列 Row 对象,Row 对象有自己的数据类型。如果使用在线预测,则必须将数据转换为使用此格式。

AutoML Tables 数据类型

分类

分类值表示类别中的值,即一个无序分类值。 这些值的差别仅在于名称,没有顺序之分。您可以使用数字来表示分类值,但这些值之间没有数值上的关系。也就是说,分类值 1 并不比分类值 0 更大。

以下是分类值的一些示例:

  • 布尔值 - truefalse
  • 国家/地区 - "USA""Canada""China" 等等。
  • HTTP 状态代码 - "200""404""500" 等等。

分类值区分大小写;拼写变体被视为不同的类别(例如,“Color”和“Colour”不会被合并为一类)。

文本

文本值表示自由格式文本,通常由文本词法单元组成。

以下是文本值的一些示例:

  • "The quick brown fox"
  • "This restaurant is the best! The food is delicious"

文本字段被解析为由空格符分隔的词法单元,用于训练模型。

数字

数值表示定序或定量的数字,这些数字可以比较。也就是说,两个不同的数字可以小于或大于彼此。

AutoML Tables 将所有兼容字符串解释为数字。前导空格或尾随空格会被删除。

下表显示了数字数据类型的所有兼容格式:

格式 示例 备注
数字字符串 “101”、“101.5” 英文句点字符 (".") 是唯一有效的小数点分隔符。“101,5”和“100,000”不是有效的数字字符串。
科学记数法 “1.12345E+11”、“1.12345e+11” 有关数字字符串十进制分隔符的信息,请参见备注。
非数字 “NAN”、“nan”、“+NAN” 忽略大小写。忽略前缀加号(“+”)或减号(“-”)。解释为 NULL 值。
无穷大 “INF”、“+inf” 忽略大小写。忽略前缀加号(“+”)或减号(“-”)。解释为 NULL 值。

时间戳

时间戳值表示时间点,以包含时区的民用时间或 Unix 时间戳的形式表示。只有时间戳类型的特征可被用作时间列

如果未指定民用时间的时区,则默认为世界协调时间 (UTC)。

下表显示了所有兼容的时间字符串格式:

格式 示例 备注
%E4Y-%m-%d “2017-01-30” 有关此格式的说明,请参见 Abseil 文档
%E4Y/%m/%d “2017/01/30”
%Y/%m/%d %H:%M:%E*S “2017/01/30 23:59:58”
%d-%m-%E4Y “30-11-2018”
%d/%m/%E4Y “30/11/2018”
%d-%B-%E4Y “30-November-2018”
%Y-%m-%dT%H:%M:%E*S%Ez “2019-05-17T23:56:09.05Z” RFC 3339
Unix 时间戳字符串(秒) “1541194447” 仅适用于 1990 年 1 月 1 日至 2030年 1 月 1 日这一时间范围。
Unix 时间戳字符串(毫秒) “1541194447000”
Unix 时间戳字符串(微秒) “1541194447000000”
Unix 时间戳字符串(纳秒) “1541194447000000000”

结构体

结构体可用于表示一组已添加标签的字段。结构体具有一系列字段名称,每个字段名称关联一个数据类型。对于同一列中的所有结构体值,字段列表及其数据类型必须相同。

以下是结构体的一些示例:

  • 血压 - {"timestamp": 1535761416, "systolic": 110, "diastolic": 70}
  • 产品 - {"name": "iPhone", price: 1000}

请使用 BigQuery STRUCT 数据类型来表示结构体。

数组

数组可用于表示值列表, 其中包含的值的数据类型必须相同。您可以在数组中添加复合数据类型(结构体);所有结构体都必须具有相同的结构。

AutoML Tables 将数组视为具有相对权重。换句话说,数组中靠后的项具有的权重比靠前的项大。

以下是数组的一些示例:

  • 产品类别:

    ["Clothing", "Women", "Dress", ...]

  • 最近购买的商品:

    ["iPhone", "Laptop", "Suitcase", ...]

  • 用户记录:

    [{"name": "Joelle", ID: 4093}, {"name": "Chloe", ID: 2047}, {"name": "Neko", ID: 3432}, ...]

请使用 BigQuery ARRAY 数据类型来表示数组。

列名称格式

在为 BigQuery 创建架构或为 CSV 创建标题行时,请在训练数据中命名列(特征)。列名称可包含任何字母数字字符或下划线 (_)。列名称不能以下划线开头。

BigQuery 表

受支持的数据类型

创建 BigQuery 表之前,您应该了解受支持的 BigQuery 数据类型以及它们如何映射到 AutoML Tables 数据类型。

BigQuery 数据类型 是否支持导入? AutoML Tables 数据类型
INT64 Y 数值、分类
NUMERIC Y 数值、分类
FLOAT64 Y 数值、分类
BOOL Y 分类
STRING Y 文本、分类、数值
BYTES N
DATE Y 时间戳、分类
DATETIME Y 时间戳、分类
GEOGRAPHY N
TIME Y 分类
TIMESTAMP Y 时间戳、分类
ARRAY Y 数组
STRUCT Y 结构体

CSV 文件

受支持的数据类型

所有 CSV 数据都作为字符串导入。使用 CSV 导入时,可以使用以下 AutoML Tables 数据类型:

  • 文本
  • 分类
  • 数字
  • 时间戳

CSV 格式

AutoML Tables 使用 RFC 4180 CSV 格式。

Row 对象格式

请求在线预测时,请务必以 Row 对象的 JSON 表示形式提供预测数据。下表显示了每种 AutoML Tables 数据类型可接受的数据格式。您可以选择最方便提供的数据格式。

AutoML Tables 数据类型 Row 对象数据类型 格式
分类 bool_type true、false
string_value "42"
"blue"
"2014-01-31"
"2014-01-31 13:14:15.123456789"
"21:02:42.118039"
"1553040000"(UNIX 时间戳)
数字 string_value "42.3"
number_value 42.3
文本 string_value "The quick brown fox"
时间戳 string_value "2014-01-31"
"2014-01-31 13:14:15.123456789"
"1553040000"(UNIX 时间戳)
数组 list_value ["dog", "cat", "fish"]
结构体 struct_value {"field1": "ABC", "field2": 100}

后续步骤