本页面介绍可以导入 AutoML Tables 数据集的数据类型,以及这些类型如何映射到 BigQuery 或 CSV。
简介
导入训练数据时,AutoML Tables 会根据输入数据的原生类型和该列中的值为每列建议数据类型。列的数据类型很重要,因为它会影响该列在训练模型时的使用方式。导入数据后,您应检查每一列以确保 AutoML Tables 选择的是正确的数据类型。
创建模型时,数据集将转换为一系列 Row 对象,Row 对象有自己的数据类型。如果使用在线预测,则必须将数据转换为使用此格式。
AutoML Tables 数据类型
分类
分类值表示类别中的值,即一个无序分类值。 这些值的差别仅在于名称,没有顺序之分。您可以使用数字来表示分类值,但这些值之间没有数值上的关系。也就是说,分类值 1 并不比分类值 0 更大。
以下是分类值的一些示例:
- 布尔值 -
true
和false
。 - 国家/地区 -
"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 | 是 | 数值、分类 |
NUMERIC | Y | 数值、分类 |
FLOAT64 | 是 | 数值、分类 |
BOOL | 是 | 分类 |
STRING | 是 | 文本、分类、数值 |
BYTES | N | |
DATE | 是 | 时间戳、分类 |
DATETIME | 是 | 时间戳、分类 |
GEOGRAPHY | N | |
TIME | 是 | 分类 |
TIMESTAMP | Y | 时间戳、分类 |
ARRAY | 是 | 数组 |
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} |
后续步骤
- 详细了解 BigQuery 数据类型
- 了解如何准备要导入 AutoML Tables 的数据