

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 数据格式兼容性指南
<a name="clarify-processing-job-data-format"></a>

本指南描述了与 Clarify 处理作业兼容的数据格式类型。 SageMaker 支持的数据格式类型包括文件扩展名、数据结构，以及对表格、映像和时间序列数据集的具体要求或限制。本指南还介绍如何检查您的数据集是否符合这些要求。

总体而言，Clarif SageMaker y 处理作业遵循输入-过程-输出模型来计算偏差指标和特征归因。有关详细信息，请参阅以下示例。

Clarif SageMaker y 处理作业的输入包括以下内容：
+ 要分析的数据集。
+ 分析配置。有关如何配置分析的更多信息，请参阅 [分析配置文件](clarify-processing-job-configure-analysis.md)。

在处理阶段，Clari SageMaker fy 会计算偏差指标和特征归因。C SageMaker larify 处理任务在后端完成以下步骤：
+ Cl SageMaker arify 处理任务解析您的分析配置并加载您的**数据集**。
+ 要计算训练后偏差指标和特征归因，该作业需要从模型中进行模型预测。**Cl SageMaker arify 处理任务会序列化您的数据，并将其作为**请求**发送到部署在 A SageMaker I 实时推理端点上的模型。**之后，Clari SageMaker fy 处理任务会从**响应**中提取预测。
+ C SageMaker larify 处理作业执行偏差和可解释性分析，然后输出结果。

有关更多信息，请参阅 [SageMaker 澄清处理任务的工作原理](clarify-configure-processing-jobs.md#clarify-processing-job-configure-how-it-works)。

用于指定数据格式的参数取决于在处理流程中使用数据的位置，如下所示：
+ 对于**输入数据集**，请使用 `dataset_type` 参数指定格式或 MIME 类型。
+ 对于向端点发出的**请求**，请使用 `content_type` 参数指定格式。
+ 对于来自端点的**响应**，请使用 `accept_type` 参数指定格式。

输入数据集、向端点发出的请求以及来自端点的响应无需采用相同格式。例如，在满足以下条件的情况下，您可以使用带有 CSV **请求**负载和 JSON 行**响应**负载的 Parquet 数据集。
+ 您的分析得到正确配置。
+ 您的模型支持请求和响应格式。

**注意**  
如果未提供`content_type`或`accept_type`未提供，则 Clarif SageMaker y 容器会推断出`content_type`和。`accept_type`

**Topics**
+ [表格数据](clarify-processing-job-data-format-tabular.md)
+ [映像数据要求](clarify-processing-job-data-format-image.md)
+ [时间序列数据](clarify-processing-job-data-format-time-series.md)

# 表格数据
<a name="clarify-processing-job-data-format-tabular"></a>

表格数据是指可以加载到二维数据框中的数据。在数据框中，每行代表一条记录，每条记录都有一列或多列。每个数据框单元格内的值可以是数字、分类或文本数据类型。

## 表格数据集先决条件
<a name="clarify-processing-job-data-format-tabular-prereq"></a>

在分析之前，您的数据集应该已经应用了任何必要的预处理步骤。这包括数据清理或特征工程。

您可以提供一个或多个数据集。如果您提供多个数据集，请使用以下方法在 Clarify 处理任务中 SageMaker 对其进行识别。
+ 使用[ProcessingInput](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ProcessingInput.html)命名配置`dataset`或分析配置`dataset_uri`来指定主数据集。有关 `dataset_uri` 的更多信息，请参阅 [分析配置文件](clarify-processing-job-configure-analysis.md) 中的参数列表。
+ 使用分析配置文件中提供的 `baseline` 参数。SHAP 分析需要基准数据集。有关分析配置文件的更多信息（包括示例），请参阅 [分析配置文件](clarify-processing-job-configure-analysis.md)。

下表列出了支持的数据格式、其文件扩展名和 MIME 类型。


| 数据格式 | 文件扩展名 | MIME 类型 | 
| --- | --- | --- | 
|  CSV  |  csv  |  `text/csv`  | 
|  JSON 行  |  jsonl  |  `application/jsonlines`  | 
|  JSON  |  json  |  `application/json`  | 
|  Parquet  |  parquet  |  “application/x-parquet”  | 

以下几节介绍了 CSV、JSON 行和 Apache Parquet 格式的表格数据集示例。

### CSV 格式的表格数据集先决条件
<a name="clarify-processing-job-data-format-tabular-prereq-csv"></a>

Cl SageMaker arify 处理任务旨在加载 cs [v.excel 方言中的 CS](https://docs.python.org/3/library/csv.html#csv.excel) V 数据文件。但是它足够灵活，可以支持其他行终止符，包括 `\n` 和 `\r`。

为了兼容起见，提供给 Clarify 处理任务的 SageMaker 所有 CSV 数据文件都必须采用 UTF-8 编码。

如果您的数据集不包含标题行，请执行以下操作：
+ 将分析配置标签设置为索引 `0`。这意味着第一列是 Ground Truth 标签。
+ 如果设置了参数 `headers`，则将 `label` 设置为标签列标题以指示标签列的位置。所有其他列都指定为特征。

  以下是不包含标题行的数据集示例。

  ```
  1,5,2.8,2.538,This is a good product
  0,1,0.79,0.475,Bad shopping experience
  ...
  ```

如果您的数据包含标题行，请将参数 `label` 设置为索引 `0`。要指示标签列的位置，请使用 Ground Truth 标签标题 `Label`。所有其他列都指定为特征。

以下是包含标题行的数据集示例。

```
Label,Rating,A12,A13,Comments
1,5,2.8,2.538,This is a good product
0,1,0.79,0.475,Bad shopping experience
...
```

### JSON 格式的表格数据集先决条件
<a name="clarify-processing-job-data-format-tabular-prereq-json"></a>

JSON 是一种灵活的格式，用于表示包含任何复杂程度的结构化数据。Cl SageMaker arify 对 JSON 的支持不限于任何特定格式，因此与 CSV 或 JSON 行格式的数据集相比，允许更灵活的数据格式。本指南介绍如何为 JSON 格式的表格数据设置分析配置。

**注意**  
为确保兼容性，提供给 Clarify 处理任务的 SageMaker 所有 JSON 数据文件都必须采用 UTF-8 编码。

以下是输入数据的示例，其记录包含顶层键、特征列表和标签。

```
[
    {"features":[1,5,2.8,2.538,"This is a good product"],"label":1},
    {"features":[0,1,0.79,0.475,"Bad shopping experience"],"label":0},
    ...
]
```

先前输入示例数据集的示例配置分析应设置以下参数：
+ 该`label`参数应使用[JMESPath](https://jmespath.org/)表达式`[*].label`来提取数据集中每条记录的基本真相标签。该 JMESPath 表达式应生成标签列表，其中第 i 个标签对应于第 i 条记录。
+ `features`参数应使用 JMESPath表达式`[*].features`为数据集中的每条记录提取特征数组。该 JMESPath 表达式应生成一个二维数组或矩阵，其中第 i 行包含与第 i 条记录对应的特征值。

  以下是输入数据的示例，其记录包含顶层键和嵌套键，嵌套键包含每条记录的特征和标签列表。

```
{
    "data": [
        {"features":[1,5,2.8,2.538,"This is a good product"],"label":1}},
        {"features":[0,1,0.79,0.475,"Bad shopping experience"],"label":0}}
    ]
}
```

先前输入示例数据集的示例配置分析应设置以下参数：
+ 该`label`参数使用[JMESPath](https://jmespath.org/)表达式`data[*].label`提取数据集中每条记录的真实情况标签。该 JMESPath 表达式应生成标签列表，其中第 i 个标签用于第 i 个记录。
+ 该`features`参数使用 JMESPath 表达式`data[*].features`为数据集中的每条记录提取要素数组。该 JMESPath 表达式应生成一个 2D 数组或矩阵，其中第 i 行包含第 i 条记录的特征值。

### JSON 行格式的表格数据集先决条件
<a name="clarify-processing-job-data-format-tabular-prereq-jsonlines"></a>

JSON 行是一种用于表示结构化数据的文本格式，其中每行都是有效的 JSON 对象。目前 C SageMaker larify 处理作业仅支持 SageMaker AI 密集格式 JSON 行。为符合格式要求，一条记录的所有特征都应列在一个 JSON 数组中。有关 JSON 行的更多信息，请参阅[JSONLINES 请求格式](cdf-inference.md#cm-jsonlines)。

**注意**  
为确保兼容性，提供给 Clarify 处理 SageMaker 任务的所有 JSON Lines 数据文件都必须采用 UTF-8 编码。

以下示例说明如何为包含**顶层键**和元素**列表**的记录设置分析配置。

```
{"features":[1,5,2.8,2.538,"This is a good product"],"label":1}
{"features":[0,1,0.79,0.475,"Bad shopping experience"],"label":0}
...
```

先前数据集示例的配置分析应按以下方式设置参数：
+ 要指示真实情况标签的位置，`label`应将参数设置为 JMESPath 表达式`label`。
+ 要指示要素数组的位置，`features`应将参数设置为 JMESPath 表达式`features`。

以下示例说明如何为包含**顶层键**和**嵌套键**（其中包含元素**列表**）的记录设置分析配置。

```
{"data":{"features":[1,5,2.8,2.538,"This is a good product"],"label":1}}
{"data":{"features":[0,1,0.79,0.475,"Bad shopping experience"],"label":0}}
...
```

先前数据集示例的配置分析应按以下方式设置参数：
+ `label`应将参数设置为 JMESPath表达式`data.label`，以指示真实情况标签的位置。
+ `features`应将参数设置为 JMESPath表达式`data.features`以指示要素数组的位置。

### Parquet 格式的表格数据集先决条件
<a name="clarify-processing-job-data-format-tabular-prereq-parquet"></a>

[Parquet](https://parquet.apache.org/) 是一种列式二进制数据格式。目前，Cl SageMaker arify 处理作业仅在处理实例数为时才支持加载 Parquet 数据文件`1`。

由于 SageMaker Clarify 处理作业不支持 Parquet 格式的端点请求或端点响应，因此您必须通过将分析配置参数设置为支持的格式`content_type`来指定端点请求的数据格式。有关更多信息，请参阅[分析配置文件](clarify-processing-job-configure-analysis.md)中的`content_type`。

Parquet 数据的列名必须格式化为字符串。使用分析配置 `label` 参数设置标签列名称以指示 Ground Truth 标签的位置。所有其他列都指定为特征。

# 表格数据的端点请求
<a name="clarify-processing-job-data-format-tabular-request"></a>

为了获得训练后偏差分析和特征重要性分析的模型预测， SageMaker Clarify 处理作业将表格数据序列化为字节，并将其作为请求有效载荷发送到推理端点。此表格数据要么来自输入数据集，要么是生成的。如果是合成数据，则由解释者生成，用于 SHAP 分析或 PDP 分析。

请求负载的数据格式应由分析配置 `content_type` 参数指定。如果未提供该参数，则 Cl SageMaker arify 处理作业将使用该`dataset_type`参数的值作为内容类型。有关 `content_type` 或 `dataset_type` 的更多信息，请参阅 [分析配置文件](clarify-processing-job-configure-analysis.md)。

以下几节介绍了 CSV 和 JSON 行格式的端点请求示例。

## CSV 格式的端点请求
<a name="clarify-processing-job-data-format-tabular-request-csv"></a>

Cl SageMaker arify 处理任务可以将数据序列化为 CSV 格式（MIME 类型:`text/csv`）。下表列出了序列化请求负载的示例。


| 端点请求负载（字符串表示形式） | 评论 | 
| --- | --- | 
|  '1,2,3,4'  |  单条记录（四个数字特征）。  | 
|  '1,2,3,4\$1n5,6,7,8'  |  两条记录，用换行符“\$1n”分隔。  | 
|  '"This is a good product",5'  |  单条记录（文本特征和数字特征）。  | 
|  ‘"This is a good product",5\$1n"Bad shopping experience",1’  |  两条记录。  | 

## 端点请求采用 JSON 行格式
<a name="clarify-processing-job-data-format-tabular-request-jsonlines"></a>

Cl SageMaker arify 处理任务可以将数据序列化为 SageMaker AI JSON Lines 密集格式（MIME 类型:`application/jsonlines`）。有关 JSON 行的更多信息，请参阅[JSONLINES 请求格式](cdf-inference.md#cm-jsonlines)。

要将表格数据转换为 JSON 数据，请为分析配置 `content_template` 参数提供模板字符串。有关 `content_template` 的更多信息，请参阅 [分析配置文件](clarify-processing-job-configure-analysis.md)。下表列出了序列化 JSON 行请求负载的示例。


| 端点请求负载（字符串表示形式） | 评论 | 
| --- | --- | 
|  '\$1"data":\$1"features":[1,2,3,4]\$1\$1'  |  单条记录。在本例中，模板看起来像 `'{"data":{"features":$features}}' `，并且 `$features` 替换为特征列表 `[1,2,3,4]`。  | 
|  '\$1"data":\$1"features":[1,2,3,4]\$1\$1\$1n\$1"data":\$1"features":[5,6,7,8]\$1\$1'  |  两个记录。  | 
|  '\$1"features":["This is a good product",5]\$1'  |  单条记录。在本例中，模板看起来像 `'{"features":$features}'`，并且 \$1features 替换为特征列表 `["This is a good product",5]`。  | 
|  '\$1"features":["This is a good product",5]\$1\$1n\$1"features":["Bad shopping experience",1]\$1'  |  两个记录。  | 

## 端点请求采用 JSON 格式
<a name="clarify-processing-job-data-format-tabular-request-json"></a>

Cl SageMaker arify 处理任务可以将数据序列化为任意 JSON 结构（MIME 类型:`application/json`）。为此，必须为分析配置 `content_template` 参数提供模板字符串。Clarify 处理 SageMaker 任务使用它来构造外部 JSON 结构。您还必须为 `record_template` 提供模板字符串，用于为每条记录构建 JSON 结构。有关 `content_template` 和 `record_template` 的更多信息，请参阅 [分析配置文件](clarify-processing-job-configure-analysis.md)。

**注意**  
由于 `content_template` 和 `record_template` 都是字符串参数，因此 JSON 序列化结构中的任何双引号字符 (`"`) 都应在配置中注明为转义字符。例如，如果要在 Python 中对双引号进行转义，可以在 `content_template` 中输入以下内容。  

```
"{\"data\":{\"features\":$record}}}"
```

下表列出了序列化 JSON 请求负载的示例，以及构造这些负载所需的相应 `content_template` 和 `record_template` 参数。


| 端点请求负载（字符串表示形式） | 评论 | content\$1template | record\$1template | 
| --- | --- | --- | --- | 
|  '\$1"data":\$1"features":[1,2,3,4]\$1\$1'  |  一次单条记录。  |  '\$1"data":\$1"features":\$1record\$1\$1\$1'  |  “\$1features”  | 
|  '\$1"instances":[[0, 1], [3, 4]], "feature-names": ["A", "B"]\$1'  |  带有特征名称的多条记录。  |  ‘\$1"instances":\$1records, "feature-names":\$1feature\$1names\$1'  |  “\$1features"  | 
|  '[\$1"A": 0, "B": 1\$1, \$1"A": 3, "B": 4\$1]'  |  多条记录，以及键值对。  |  “\$1records"  |  “\$1features\$1kvp"  | 
|  ‘\$1"A": 0, "B": 1\$1'  |  一次单条记录，以及键值对。  |  "\$1record"  |  "\$1features\$1kvp"  | 
|  ‘\$1"A": 0, "nested": \$1"B": 1\$1\$1'  |  或者，对任意结构使用详细的 record\$1template。  |  "\$1record"  |  '\$1"A": "\$1\$1A\$1", "nested": \$1"B": "\$1\$1B\$1"\$1\$1'  | 

# 表格数据的端点响应
<a name="clarify-processing-job-data-format-tabular-response"></a>

在 Cl SageMaker arify 处理作业收到推理端点调用的响应后，它会反序列化响应有效负载并从中提取预测。使用分析配置 `accept_type` 参数指定响应负载的数据格式。如果未提供，则 C `accept_type` lari SageMaker fy 处理作业将使用 content\$1type 参数的值作为模型输出格式。有关 `accept_type`的更多信息，请参阅[分析配置文件](clarify-processing-job-configure-analysis.md)。

预测可以由用于偏差分析的预测标签或用于特征重要性分析的概率值（得分）组成。在 `predictor` 分析配置中，以下三个参数提取预测。
+ 参数 `probability` 用于定位端点响应中的概率值（得分）。
+ 参数 `label` 用于在端点响应中定位预测标签。
+ （可选）参数 `label_headers` 提供多类模型的预测标签。

以下准则适用于 CSV、JSON 行和 JSON 格式的端点响应。

## 端点响应采用 CSV 格式
<a name="clarify-processing-job-data-format-tabular-reponse-csv"></a>

如果响应负载采用 CSV 格式（MIME 类型:`text/csv`），则 Clarify 处理 SageMaker 任务会反序列化每行。然后，它使用分析配置中提供的列索引，从反序列化数据中提取预测。响应负载中的行必须与请求负载中的记录相匹配。

下表提供了不同格式和不同问题类型的响应数据的示例。只要可以根据分析配置提取预测，您的数据就可以与这些示例不同。

以下几节介绍了 CSV 格式的端点响应示例。

### 端点响应采用 CSV 格式，仅包含概率
<a name="clarify-processing-job-data-format-tabular-reponse-csv-prob"></a>

下表是回归和二进制分类问题的端点响应示例。


| 端点请求负载 | 端点响应负载（字符串表示形式） | 
| --- | --- | 
|  单条记录。  |  '0.6'  | 
|  两条记录（结果位于一行，用逗号分隔）。  |  '0.6,0.3'  | 
|  两条记录（结果分为两行）。  |  '0.6\$1n0.3'  | 

在前面的示例中，端点输出预测标签的单个概率值（得分）。要使用索引提取概率并将其用于特征重要性分析，请将分析配置参数 `probability` 设置为列索引 `0`。如果使用 `probability_threshold` 参数将这些概率转换为二进制值，则也可以将这些概率用于偏差分析。有关 `probability_threshold`的更多信息，请参阅[分析配置文件](clarify-processing-job-configure-analysis.md)。

下表是多类问题的端点响应示例。


| 端点请求负载 | 端点响应负载（字符串表示形式） | 
| --- | --- | 
|  多类模型（三个类）的单条记录。  |  '0.1,0.6,0.3'  | 
|  多类模型（三个类）的两条记录。  |  '0.1,0.6,0.3\$1n0.2,0.5,0.3'  | 

在前面的示例中，端点输出概率（得分）列表。如果未提供索引，则会提取所有值并将其用于特征重要性分析。如果提供了分析配置参数 `label_headers`，然后， SageMaker Clarify 处理作业可以选择最大概率的标签标题作为预测标签，该标签可用于偏差分析。有关 `label_headers`的更多信息，请参阅[分析配置文件](clarify-processing-job-configure-analysis.md)。

### 端点响应采用 CSV 格式，仅包含预测标签
<a name="clarify-processing-job-data-format-tabular-reponse-csv-pred"></a>

下表是回归和二进制分类问题的端点响应示例。


| 端点请求负载 | 端点响应负载（字符串表示形式） | 
| --- | --- | 
|  单条记录  |  '1'  | 
|  两条记录（结果位于一行，用逗号分隔）  |  '1,0'  | 
|  两条记录（结果分为两行）  |  '1\$1n0'  | 

在前面的示例中，端点输出预测标签而不是概率。将 `predictor` 配置的 `label` 参数设置为列索引 `0`，这样就可以使用索引提取预测标签并用于偏差分析。

### 端点响应采用 CSV 格式，包含预测标签和概率
<a name="clarify-processing-job-data-format-tabular-reponse-csv-pred-prob"></a>

下表是回归和二进制分类问题的端点响应示例。


| 端点请求负载 | 端点响应负载（字符串表示形式） | 
| --- | --- | 
|  单个记录  |  '1,0.6'  | 
|  两条记录  |  '1,0.6\$1n0,0.3'  | 

在前面的示例中，端点先输出预测标签，然后输出其概率。将 `predictor` 配置的 `label` 参数设置为列索引 `0`，并将 `probability` 设置为列索引 `1` 以提取两个参数值。

### 端点响应采用 CSV 格式，包含预测标签和概率（多类）
<a name="clarify-processing-job-data-format-tabular-reponse-csv-preds-probs"></a>

可以将由 Amazon A SageMaker utopilot 训练的多类模型配置为输出预测标签和概率列表的字符串表示形式。以下示例表显示了一个来自模型的示例端点响应，该模型配置为输出 `predicted_label`、`probability`、`labels` 和 `probabilities`。


| 端点请求负载 | 端点响应负载（字符串表示形式） | 
| --- | --- | 
|  单个记录  |  '"dog",0.6,"[\$1'cat\$1', \$1'dog\$1', \$1'fish\$1']","[0.1, 0.6, 0.3]"'  | 
|  两个记录  |  '"dog",0.6,"[\$1'cat\$1', \$1'dog\$1', \$1'fish\$1']","[0.1, 0.6, 0.3]"\$1n""cat",0.7,[\$1'cat\$1', \$1'dog\$1', \$1'fish\$1']","[0.7, 0.2, 0.1]"'  | 

在前面的示例中，可以通过以下方式配置 Clarify 处理作业来提取预测值。 SageMaker 

要进行偏差分析，可以将前面的示例配置为以下方式之一。
+ 将 `predictor` 配置的 `label` 参数设置为 `0`，以提取预测标签。
+ 将参数设置为 `2` 以提取预测标签，将 `probability` 设置为 `3` 以提取相应的概率。Clarify 处理作业可以通过识别概率值最高的标签来自动确定预测的标签。 SageMaker 参照前面的单条记录示例，该模型预测了三个标签：`cat`、`dog` 和 `fish`，对应的概率为 `0.1`、`0.6` 和 `0.3`。基于这些概率，预测标签为 `dog`，因为它的概率值最高，为 `0.6`。
+ 将 `probability` 设置为 `3` 以提取概率。如果`label_headers`提供，则 Clar SageMaker ify 处理作业可以通过识别概率值最高的标签标题来自动确定预测的标签。

要进行特征重要性分析，可以按以下方式配置前面的示例。
+ 将 `probability` 设置为 `3` 以提取所有预测标签的概率。然后，将计算所有标签的特征归因。如果客户未指定 `label_headers`，则预测标签将在分析报告中用作标签标题。

## 端点响应采用 JSON 行格式
<a name="clarify-processing-job-data-format-tabular-reponse-jsonlines"></a>

如果响应负载采用 JSON 行格式（MIME 类型:`application/jsonlines`），则 Clarify 处理任务会 SageMaker 将每行反序列化为 JSON。然后，它使用分析配置中提供的 JMESPath 表达式从反序列化数据中提取预测。响应负载中的行必须与请求负载中的记录相匹配。下表显示了不同格式的响应数据的示例。只要可以根据分析配置提取预测，您的数据就可以与这些示例不同。

以下几节介绍了 JSON 行格式的端点响应示例。

### 端点响应采用 JSON 行格式，仅包含概率
<a name="clarify-processing-job-data-format-tabular-reponse-jsonlines-prob"></a>

下表是仅输出概率值（得分）的端点响应示例。


| 端点请求负载 | 端点响应负载（字符串表示形式） | 
| --- | --- | 
|  单个记录  |  '\$1"score":0.6\$1'  | 
|  两个记录  |  '\$1"score":0.6\$1\$1n\$1"score":0.3\$1'  | 

在前面的示例中，将分析配置参数设置`probability`为 JMESPath 表达式 “score” 以提取其值。

### 端点响应采用 JSON 行格式，仅包含预测标签
<a name="clarify-processing-job-data-format-tabular-reponse-jsonlines-pred"></a>

下表是仅输出预测标签的端点响应示例。


| 端点请求负载 | 端点响应负载（字符串表示形式） | 
| --- | --- | 
|  单个记录  |  '\$1"prediction":1\$1'  | 
|  两个记录  |  '\$1"prediction":1\$1\$1n\$1"prediction":0\$1'  | 

在前面的示例中，将预测变量配置的`label`参数设置为 expression JMESPath 。`prediction`然后，Cl SageMaker arify 处理任务可以提取预测的标签进行偏差分析。有关更多信息，请参阅 [分析配置文件](clarify-processing-job-configure-analysis.md)。

### 端点响应采用 JSON 行格式，包含预测标签和概率
<a name="clarify-processing-job-data-format-tabular-reponse-jsonlines-pred-prob"></a>

下表是输出预测标签及其得分的端点响应示例。


| 端点请求负载 | 端点响应负载（字符串表示形式） | 
| --- | --- | 
|  单个记录  |  '\$1"prediction":1,"score":0.6\$1'  | 
|  两个记录  |  '\$1"prediction":1,"score":0.6\$1\$1n\$1"prediction":0,"score":0.3\$1'  | 

对于前面的示例，将`predictor`配置的`label`参数设置为 JMESPath 表达式 “预测” 以提取预测的标签。设置`probability`为 JMESPath 表达式 “分数” 以提取概率。有关更多信息，请参阅 [分析配置文件](clarify-processing-job-configure-analysis.md)。

### 端点响应采用 JSON 行格式，包含预测标签和概率（多类）
<a name="clarify-processing-job-data-format-tabular-reponse-jsonlines-preds-probs"></a>

下表是多类模型的端点响应示例，其输出如下：
+ 预测标签列表。
+  概率，以及所选的预测标签及其概率。


| 端点请求负载 | 端点响应负载（字符串表示形式） | 
| --- | --- | 
|  单个记录  |  '\$1"predicted\$1label":"dog","probability":0.6,"predicted\$1labels":["cat","dog","fish"],"probabilities":[0.1,0.6,0.3]\$1'  | 
|  两个记录  |  '\$1"predicted\$1label":"dog","probability":0.6,"predicted\$1labels":["cat","dog","fish"],"probabilities":[0.1,0.6,0.3]\$1\$1n\$1"predicted\$1label":"cat","probability":0.7,"predicted\$1labels":["cat","dog","fish"],"probabilities":[0.7,0.2,0.1]\$1'  | 

 在前面的示例中 SageMaker ，可以通过多种方式配置 Clarify 处理作业以提取预测。

要进行偏差分析，可以将前面的示例配置为以下方式**之一**。
+ 将`predictor`配置的`label`参数设置为 JMESPath 表达式 “predicted\$1label” 以提取预测的标签。
+ 将参数设置为 JMESPath 表达式 “predicted\$1labels” 以提取预测的标签。设置`probability`为 JMESPath 表达式 “概率” 以提取其概率。Cl SageMaker arify 作业通过识别概率值最高的标签来自动确定预测的标签。
+ 设置`probability`为 JMESPath 表达式 “概率” 以提取其概率。如果`label_headers`提供，则 Clar SageMaker ify 处理作业可以通过识别概率值最高的标签来自动确定预测的标签。

要进行特征重要性分析，请执行以下操作。
+ 设置`probability`为 JMESPath 表达式 “概率” 以提取所有预测标签的概率。然后，将计算所有标签的特征归因。

## 端点响应采用 JSON 格式
<a name="clarify-processing-job-data-format-tabular-reponse-json"></a>

如果响应负载采用 JSON 格式（MIME 类型:`application/json`），则 Clarify 处理任务会 SageMaker 将整个有效负载反序列化为 JSON。然后，它使用分析配置中提供的 JMESPath 表达式从反序列化数据中提取预测。响应负载中的记录必须与请求负载中的记录相匹配。

以下几节介绍了 JSON 格式的端点响应示例。这几节包含一些表格，表中提供了不同格式和不同问题类型的响应数据的示例。只要可以根据分析配置提取预测，您的数据就可以与这些示例不同。

### 端点响应采用 JSON 格式，仅包含概率
<a name="clarify-processing-job-data-format-tabular-reponse-json-prob"></a>

下表是仅输出概率值（得分）的端点响应示例。


| 端点请求负载 | 端点响应负载（字符串表示形式） | 
| --- | --- | 
|  单个记录  |  '[0.6]'  | 
|  两个记录  |  '[0.6,0.3]'  | 

在前面的示例中，响应负载中没有换行符，而是有一个 JSON 对象，其中包含一个得分列表，请求中的每条记录对应一个得分。将分析配置参数设置`probability`为 JMESPath 表达式 “[\$1]” 以提取值。

### 端点响应采用 JSON 格式，仅包含预测标签
<a name="clarify-processing-job-data-format-tabular-reponse-json-pred"></a>

下表是仅输出预测标签的端点响应示例。


| 端点请求负载 | 端点响应负载（字符串表示形式） | 
| --- | --- | 
|  单个记录  |  '\$1"predicted\$1labels":[1]\$1'  | 
|  两个记录  |  '\$1"predicted\$1labels":[1,0]\$1'  | 

将`predictor`配置的`label`参数设置为 JMESPath 表达式 “predicted\$1labels”，然后 Clarif SageMaker y 处理作业可以提取预测的标签进行偏差分析。

### 端点响应采用 JSON 格式，包含预测标签和概率
<a name="clarify-processing-job-data-format-tabular-reponse-json-pred-prob"></a>

下表是输出预测标签及其得分的端点响应示例。


| 端点请求负载 | 端点响应负载（字符串表示形式） | 
| --- | --- | 
|  单个记录  |  '\$1"predictions":[\$1"label":1,"score":0.6\$1'  | 
|  两个记录  |  ‘\$1"predictions":[\$1"label":1,"score":0.6\$1,\$1"label":0,"score":0.3\$1]\$1'  | 

在前面的示例中，将`predictor`配置的`label`参数设置为 JMESPath 表达式 “预测 [\$1] .label” 以提取预测的标签。设置`probability`为 JMESPath 表达式 “预测 [\$1] .score” 以提取概率。

### 端点响应采用 JSON 格式，包含预测标签和概率（多类）
<a name="clarify-processing-job-data-format-tabular-reponse-json-preds-probs"></a>

下表是多类模型的端点响应示例，其输出如下：
+ 预测标签列表。
+ 概率，以及所选的预测标签及其概率。


| 端点请求负载 | 端点响应负载（字符串表示形式） | 
| --- | --- | 
|  单个记录  |  '[\$1"predicted\$1label":"dog","probability":0.6,"predicted\$1labels":["cat","dog","fish"],"probabilities":[0.1,0.6,0.3]\$1]'  | 
|  两个记录  |  '[\$1"predicted\$1label":"dog","probability":0.6,"predicted\$1labels":["cat","dog","fish"],"probabilities":[0.1,0.6,0.3]\$1,\$1"predicted\$1label":"cat","probability":0.7,"predicted\$1labels":["cat","dog","fish"],"probabilities":[0.7,0.2,0.1]\$1]'  | 

可以通过多种方式配置 Clarify 处理作业以提取预测。 SageMaker 

要进行偏差分析，可以将前面的示例配置为以下方式**之一**。
+ 将`predictor`配置的`label`参数设置为 JMESPath 表达式 “[\$1] .predicted\$1label” 以提取预测的标签。
+ 将参数设置为 JMESPath 表达式 “[\$1] .predicted\$1labels” 以提取预测的标签。设置`probability`为 JMESPath 表达式 “[\$1] .probercilities” 以提取其概率。Cl SageMaker arify 处理任务可以通过识别具有最高邻近值的标签来自动确定预测的标签。
+ 设置`probability`为 JMESPath 表达式 “[\$1] .probercilities” 以提取其概率。如果`label_headers`提供，则 Clar SageMaker ify 处理作业可以通过识别概率值最高的标签来自动确定预测的标签。

要进行特征重要性分析，`probability`请设置为 JMESPath 表达式 “[\$1] .probercilities” 以提取所有预测标签的概率。然后，将计算所有标签的特征归因。

# 预先检查表格数据的端点请求和响应
<a name="clarify-processing-job-data-format-tabular-precheck"></a>

我们建议您将模型部署到 A SageMaker I 实时推理终端节点，然后向该终端节点发送请求。手动检查请求和响应，确保两者都符合[表格数据的端点请求](clarify-processing-job-data-format-tabular-request.md)部分和[表格数据的端点响应](clarify-processing-job-data-format-tabular-response.md)部分的要求。如果您的模型容器支持批处理请求，则可以从单个记录请求开始，然后尝试两条或更多记录。

以下命令显示如何使用 AWS CLI请求响应。已预先安装在 SageMaker Studio 和 SageMaker 笔记本实例中。 AWS CLI 要安装 AWS CLI，请按照本[安装指南](https://aws.amazon.com/cli/)进行操作。

```
aws sagemaker-runtime invoke-endpoint \
  --endpoint-name $ENDPOINT_NAME \
  --content-type $CONTENT_TYPE \
  --accept $ACCEPT_TYPE \
  --body $REQUEST_DATA \
  $CLI_BINARY_FORMAT \
  /dev/stderr 1>/dev/null
```

参数已定义，如下所示。
+ `$ENDPOINT NAME`：端点名称。
+ `$CONTENT_TYPE` - 请求的 MIME 类型（模型容器输入）。
+ `$ACCEPT_TYPE`：响应（模型容器输出）的 MIME 类型。
+ `$REQUEST_DATA`：请求的有效载荷字符串。
+ `$CLI_BINARY_FORMAT` - 命令行界面 (CLI) 参数的格式。对于 AWS CLI v1，此参数应保留为空。对于 v2，此参数应设置为 `--cli-binary-format raw-in-base64-out`。

**注意**  
AWS CLI [默认情况下，v2 将二进制参数作为 base64 编码的字符串传递。](https://docs.aws.amazon.com/cli/latest/userguide/cliv2-migration.html#cliv2-migration-binaryparam)

# AWS CLI v1 示例
<a name="clarify-processing-job-data-format-tabular-precheck-cli-v1-examples"></a>

上一节中的示例适用于 AWS CLI v2。以下发送到端点的请求示例和来自端点的响应示例使用 AWS CLI v1。

## CSV 格式的端点请求和响应
<a name="clarify-processing-job-data-format-tabular-precheck-csv"></a>

在以下代码示例中，请求由一条记录组成，响应是其概率值。

```
aws sagemaker-runtime invoke-endpoint \
  --endpoint-name test-endpoint-sagemaker-xgboost-model \
  --content-type text/csv \
  --accept text/csv \
  --body '1,2,3,4' \
  /dev/stderr 1>/dev/null
```

在前面的代码示例中，响应输出如下。

```
0.6
```

在以下代码示例中，请求由两条记录组成，响应包括其概率，这些概率用逗号分隔。

```
aws sagemaker-runtime invoke-endpoint \
  --endpoint-name test-endpoint-sagemaker-xgboost-model \
  --content-type text/csv \
  --accept text/csv \
  --body $'1,2,3,4\n5,6,7,8' \
  /dev/stderr 1>/dev/null
```

在前面的代码示例中，`--body` 中的 `$'content'` 表达式告诉命令将内容中的 `'\n'` 解释为换行符。响应输出如下。

```
0.6,0.3
```

在以下代码示例中，请求由两条记录组成，响应包括其概率，这些概率用换行符分隔。

```
aws sagemaker-runtime invoke-endpoint \
  --endpoint-name test-endpoint-csv-1 \
  --content-type text/csv \
  --accept text/csv \
  --body $'1,2,3,4\n5,6,7,8' \
  /dev/stderr 1>/dev/null
```

在前面的代码示例中，响应输出如下。

```
0.6
0.3
```

在以下代码示例中，请求由一条记录组成，响应是来自包含三个类的多类模型的概率值。

```
aws sagemaker-runtime invoke-endpoint \
  --endpoint-name test-endpoint-csv-1 \
  --content-type text/csv \
  --accept text/csv \
  --body '1,2,3,4' \
  /dev/stderr 1>/dev/null
```

在前面的代码示例中，响应输出如下。

```
0.1,0.6,0.3
```

在以下代码示例中，请求由两条记录组成，响应包括来自包含三个类的多类模型的概率值。

```
aws sagemaker-runtime invoke-endpoint \
  --endpoint-name test-endpoint-csv-1 \
  --content-type text/csv \
  --accept text/csv \
  --body $'1,2,3,4\n5,6,7,8' \
  /dev/stderr 1>/dev/null
```

在前面的代码示例中，响应输出如下。

```
0.1,0.6,0.3
0.2,0.5,0.3
```

在以下代码示例中，请求由两条记录组成，响应包括预测标签和概率。

```
aws sagemaker-runtime invoke-endpoint \
  --endpoint-name test-endpoint-csv-2 \
  --content-type text/csv \
  --accept text/csv \
  --body $'1,2,3,4\n5,6,7,8' \
  /dev/stderr 1>/dev/null
```

在前面的代码示例中，响应输出如下。

```
1,0.6
0,0.3
```

在以下代码示例中，请求由两条记录组成，响应包括标签标题和概率。

```
aws sagemaker-runtime invoke-endpoint \
  --endpoint-name test-endpoint-csv-3 \
  --content-type text/csv \
  --accept text/csv \
  --body $'1,2,3,4\n5,6,7,8' \
  /dev/stderr 1>/dev/null
```

在前面的代码示例中，响应输出如下。

```
"['cat','dog','fish']","[0.1,0.6,0.3]"
"['cat','dog','fish']","[0.2,0.5,0.3]"
```

## JSON 行格式的端点请求和响应
<a name="clarify-processing-job-data-format-tabular-precheck-jsonlines"></a>

在以下代码示例中，请求由一条记录组成，响应是其概率值。

```
aws sagemaker-runtime invoke-endpoint \
  --endpoint-name test-endpoint-jsonlines \
  --content-type application/jsonlines \
  --accept application/jsonlines \
  --body '{"features":["This is a good product",5]}' \
  /dev/stderr 1>/dev/null
```

在前面的代码示例中，响应输出如下。

```
{"score":0.6}
```

在以下代码示例中，请求由两条记录组成，响应包括预测标签和概率。

```
aws sagemaker-runtime invoke-endpoint \
  --endpoint-name test-endpoint-jsonlines-2 \
  --content-type application/jsonlines \
  --accept application/jsonlines \
  --body $'{"features":[1,2,3,4]}\n{"features":[5,6,7,8]}' \
  /dev/stderr 1>/dev/null
```

在前面的代码示例中，响应输出如下。

```
{"predicted_label":1,"probability":0.6}
{"predicted_label":0,"probability":0.3}
```

在以下代码示例中，请求由两条记录组成，响应包括标签标题和概率。

```
aws sagemaker-runtime invoke-endpoint \
  --endpoint-name test-endpoint-jsonlines-3 \
  --content-type application/jsonlines \
  --accept application/jsonlines \
  --body $'{"data":{"features":[1,2,3,4]}}\n{"data":{"features":[5,6,7,8]}}' \
  /dev/stderr 1>/dev/null
```

在前面的代码示例中，响应输出如下。

```
{"predicted_labels":["cat","dog","fish"],"probabilities":[0.1,0.6,0.3]}
{"predicted_labels":["cat","dog","fish"],"probabilities":[0.2,0.5,0.3]}
```

## 混合格式的端点请求和响应
<a name="clarify-processing-job-data-format-tabular-precheck-diff"></a>

在以下代码示例中，请求采用 CSV 格式，响应采用 JSON 行格式。

```
aws sagemaker-runtime invoke-endpoint \
  --endpoint-name test-endpoint-csv-in-jsonlines-out \
  --content-type text/csv \
  --accept application/jsonlines \
  --body $'1,2,3,4\n5,6,7,8' \
  /dev/stderr 1>/dev/null
```

在前面的代码示例中，响应输出如下。

```
{"probability":0.6}
{"probability":0.3}
```

在以下代码示例中，请求采用 JSON 行格式，响应采用 CSV 格式。

```
aws sagemaker-runtime invoke-endpoint \
  --endpoint-name test-endpoint-jsonlines-in-csv-out \
  --content-type application/jsonlines \
  --accept text/csv \
  --body $'{"features":[1,2,3,4]}\n{"features":[5,6,7,8]}' \
  /dev/stderr 1>/dev/null
```

在前面的代码示例中，响应输出如下。

```
0.6
0.3
```

在以下代码示例中，请求采用 CSV 格式，响应采用 JSON 格式。

```
aws sagemaker-runtime invoke-endpoint \
  --endpoint-name test-endpoint-csv-in-jsonlines-out \
  --content-type text/csv \
  --accept application/jsonlines \
  --body $'1,2,3,4\n5,6,7,8' \
  /dev/stderr 1>/dev/null
```

在前面的代码示例中，响应输出如下。

```
{"predictions":[{"label":1,"score":0.6},{"label":0,"score":0.3}]}
```

# 映像数据要求
<a name="clarify-processing-job-data-format-image"></a>

 SageMaker 澄清处理作业为解释图像提供支持。本主题提供对图像数据的数据格式要求。有关处理映像数据的信息，请参阅 [分析图像数据以实现计算机视觉可解释性](clarify-processing-job-run.md#clarify-processing-job-run-cv)。

图像数据集包含一个或多个图像文件。要识别 Clarify SageMaker 处理任务的输入数据集，请将[ProcessingInput](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateProcessingJob.html#sagemaker-CreateProcessingJob-request-ProcessingInputs)命名`dataset`或分析配置`dataset_uri`参数设置为图像文件的 Amazon S3 URI 前缀。

下表列出了支持的图像文件格式和文件扩展名。


| 图像格式 | 文件扩展名 | 
| --- | --- | 
|  JPEG  |  jpg、jpeg  | 
|  PNG  |  png  | 

将分析配置 `dataset_type` 参数设置为 **application/x-image**。由于该类型不是特定的图像文件格式，因此将使用 `content_type` 来决定图像文件的格式和扩展名。

Cl SageMaker arify 处理任务将每个图像文件加载到三维[NumPy数组](https://numpy.org/doc/stable/reference/generated/numpy.ndarray.html)中以进行进一步处理。这三个维度包括每个像素的高度、宽度和 RGB 值。

## 端点请求格式
<a name="clarify-processing-job-data-format-image-request"></a>

Cl SageMaker arify 处理任务将图像的原始 RGB 数据转换为兼容的图像格式，例如 JPEG。它会在将数据发送到端点进行预测之前执行此操作。支持的图像格式如下。


| 数据格式 | MIME 类型 | 文件扩展名 | 
| --- | --- | --- | 
|  JPEG  |  `image/jpeg`  |  jpg、jpeg  | 
|  PNG  |  `image/png`  |  png  | 
|  NPY  |  `application/x-npy`  |  以上全部  | 

使用分析配置参数 `content_type` 指定请求负载的数据格式。如果未提供 `content_type`，则数据格式默认为 `image/jpeg`。

## 端点响应格式
<a name="clarify-processing-job-data-format-image-response"></a>

收到推理端点调用的响应后，Clarify 处理任务会 SageMaker 反序列化响应有效负载，然后从中提取预测。

### 图像分类问题
<a name="clarify-processing-job-data-format-image-response-class"></a>

响应负载的数据格式应由分析配置参数 accept\$1type 指定。如果未提供 `accept_type`，则数据格式默认为 `application/json`。支持的格式与表格数据部分中**表格数据的端点响应**中描述的格式相同。

[使用图像分类算法进行推理](image-classification.md#IC-inference)有关 SageMaker 人工智能内置图像分类算法的示例，该算法接受单个图像，然后返回一个概率值（分数）数组，每个概率值对应一个类别。

如下表所示，当 `content_type` 参数设置为 `application/jsonlines` 时，响应将是一个 JSON 对象。


| 端点请求负载 | 端点响应负载（字符串表示形式） | 
| --- | --- | 
|  单个图像  |  '\$1"prediction":[0.1,0.6,0.3]\$1'  | 

在前面的示例中，将`probability`参数设置为 JMESPath 表达式 “预测” 以提取分数。

将 `content_type` 设置为 `application/json` 时，响应将是一个 JSON 对象，如下表所示。


| 端点请求负载 | 端点响应负载（字符串表示形式） | 
| --- | --- | 
|  单个图像  |  '[0.1,0.6,0.3]'  | 

在前面的示例中，设置`probability`为 JMESPath 表达式 “[\$1]” 以提取数组的所有元素。在前面的示例中，提取了 [`0.1, 0.6, 0.3]`。或者，如果跳过设置 `probability` 配置参数，则还会提取数组的所有元素。这是因为整个负载都被反序列化为预测。

### 对象检测问题
<a name="clarify-processing-job-data-format-object-response-class"></a>

分析配置 `accept_type` 默认为 `application/json`，唯一支持的格式是对象检测推理格式。有关响应格式的更多信息，请参阅 [响应格式](object-detection-in-formats.md#object-detection-recordio)。

下表是输出数组的端点响应示例。数组的每个元素都是一个值数组，其中包含检测到的对象的类索引、置信度得分和边界框坐标。


| 端点请求负载 | 端点响应负载（字符串表示形式） | 
| --- | --- | 
|  单个图像（一个对象）  |  '[[4.0, 0.86419455409049988, 0.3088374733924866, 0.07030484080314636, 0.7110607028007507, 0.9345266819000244]]'  | 
|  单个图像（两个对象）  |  '[[4.0, 0.86419455409049988, 0.3088374733924866, 0.07030484080314636, 0.7110607028007507, 0.9345266819000244],[0.0, 0.73376623392105103, 0.5714187026023865, 0.40427327156066895, 0.827075183391571, 0.9712159633636475]]'  | 

下表是输出 JSON 对象（其中的键指向数组）的端点响应示例。将分析配置 `probability` 设置为键 "prediction" 以提取值。


| 端点请求负载 | 端点响应负载（字符串表示形式） | 
| --- | --- | 
|  单个图像（一个对象）  |  '\$1"prediction":[[4.0, 0.86419455409049988, 0.3088374733924866, 0.07030484080314636, 0.7110607028007507, 0.9345266819000244]]\$1'  | 
|  单个图像（两个对象）  |  '\$1"prediction":[[4.0, 0.86419455409049988, 0.3088374733924866, 0.07030484080314636, 0.7110607028007507, 0.9345266819000244],[0.0, 0.73376623392105103, 0.5714187026023865, 0.40427327156066895, 0.827075183391571, 0.9712159633636475]]\$1'  | 

## 预先检查图像数据的端点请求和响应
<a name="clarify-processing-job-data-format-object-precheck"></a>

我们建议您将模型部署到 A SageMaker I 实时推理终端节点，然后向该终端节点发送请求。手动检查请求和响应。确保两者都符合**图像数据的端点请求**部分和**图像数据的端点响应**部分中的要求。

以下两个代码示例说明了如何发送请求并检查图像分类问题和对象检测问题的响应。

### 图像分类问题
<a name="clarify-processing-job-data-format-object-precheck-class"></a>

以下示例代码指示端点读取 PNG 文件，然后对其进行分类。

```
aws sagemaker-runtime invoke-endpoint \
  --endpoint-name test-endpoint-sagemaker-image-classification \
  --content-type "image/png" \
  --accept "application/json" \
  --body fileb://./test.png  \
  /dev/stderr 1>/dev/null
```

在前面的代码示例中，响应输出如下。

```
[0.1,0.6,0.3]
```

### 对象检测问题
<a name="clarify-processing-job-data-format-object-precheck-object"></a>

以下示例代码指示端点读取 JPEG 文件，然后检测其中的对象。

```
aws sagemaker-runtime invoke-endpoint \
  --endpoint-name test-endpoint-sagemaker-object-detection \
  --content-type "image/jpg" \
  --accept "application/json" \
  --body fileb://./test.jpg  \
  /dev/stderr 1>/dev/null
```

在前面的代码示例中，响应输出如下。

```
{"prediction":[[4.0, 0.86419455409049988, 0.3088374733924866, 0.07030484080314636, 0.7110607028007507, 0.9345266819000244],[0.0, 0.73376623392105103, 0.5714187026023865, 0.40427327156066895, 0.827075183391571, 0.9712159633636475],[4.0, 0.32643985450267792, 0.3677481412887573, 0.034883320331573486, 0.6318609714508057, 0.5967587828636169],[8.0, 0.22552496790885925, 0.6152569651603699, 0.5722782611846924, 0.882301390171051, 0.8985623121261597],[3.0, 0.42260299175977707, 0.019305512309074402, 0.08386176824569702, 0.39093565940856934, 0.9574796557426453]]}
```

# 时间序列数据
<a name="clarify-processing-job-data-format-time-series"></a>

时间序列数据是指可载入三维数据框架的数据。在框架中，每个时间戳的每一行都代表一条目标记录，而每条目标记录都有一个或多个相关列。每个数据框单元格内的值可以是数字、分类或文本数据类型。

## 时间序列数据集的先决条件
<a name="clarify-processing-job-data-format-time-series-prereq"></a>

在分析之前，完成必要的预处理步骤来准备数据，如数据清理或特征工程。您可以提供一个或多个数据集。如果您提供多个数据集，请使用以下方法之一将其提供给 Clarif SageMaker y 处理作业：
+ 使用[ProcessingInput](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ProcessingInput.html)命名配置`dataset`或分析配置`dataset_uri`来指定主数据集。有关 `dataset_uri` 的更多信息，请参阅 [分析配置文件](clarify-processing-job-configure-analysis.md) 中的参数列表。
+ 使用分析配置文件中提供的 `baseline` 参数。如果存在，`static_covariates` 需要基线数据集。有关分析配置文件的更多信息（包括示例），请参阅 [分析配置文件](clarify-processing-job-configure-analysis.md)。

下表列出了支持的数据格式、其文件扩展名和 MIME 类型。


| 数据格式 | 文件扩展名 | MIME 类型 | 
| --- | --- | --- | 
|  `item_records`  |  json  |  `application/json`  | 
|  `timestamp_records`  |  json  |  `application/json`  | 
|  `columns`  |  json  |  `application/json`  | 

JSON 是一种灵活的格式，可以表示结构化数据的任何复杂程度。如表所示，Clar SageMaker ify 支持格式`item_records``timestamp_records`、和`columns`。

## 时间序列数据集配置示例
<a name="clarify-processing-job-data-format-time-series-ex"></a>

本节将向您展示如何使用 `time_series_data_config` 为 JSON 格式的时间序列数据设置分析配置。假设有一个数据集，其中包含两个项目，每个项目都有一个时间戳 (t)、目标时间序列 (x)、两个相关时间序列 (r) 和两个静态协变量 (u)，具体如下：

 t1 = [0,1,2], t2 = [2,3]

x1 = [5,6,4], x2 = [0,4]

r1 = [0,1,0], r21 = [1,1]

r12 = [0,0,0], r22 = [1,0]

u11 = -1, u21 = 0

u12 = 1, u22 = 2

根据 `dataset_format` 的不同，您可以用三种不同的方式使用 `time_series_data_config` 对数据集进行编码。下文将介绍每种方法。

### 当 `dataset_format` 为 `columns` 时的时间序列数据配置
<a name="clarify-processing-job-data-format-time-series-columns"></a>

下面的示例使用了 `dataset_format` 的 `columns` 值。下面的 JSON 文件代表了前面的数据集。

```
{
    "ids": [1, 1, 1, 2, 2],
    "timestamps": [0, 1, 2, 2, 3], # t
    "target_ts": [5, 6, 4, 0, 4], # x
    "rts1": [0, 1, 0, 1, 1], # r1
    "rts2": [0, 0, 0, 1, 0], # r2
    "scv1": [-1, -1, -1, 0, 0], # u1
    "scv2": [1, 1, 1, 2, 2], # u2
}
```

请注意，`ids` 字段中的项目 ID 是重复的。`time_series_data_config` 的正确实现如下所示：

```
"time_series_data_config": {
    "item_id": "ids",
    "timestamp": "timestamps",
    "target_time_series": "target_ts",
    "related_time_series": ["rts1", "rts2"],
    "static_covariates": ["scv1", "scv2"],
    "dataset_format": "columns"
}
```

### 当 `dataset_format` 为 `item_records` 时的时间序列数据配置
<a name="clarify-processing-job-data-format-time-series-itemrec"></a>

下面的示例使用了 `dataset_format` 的 `item_records` 值。下面的 JSON 文件代表了数据集。

```
[
    {
        "id": 1,
        "scv1": -1,
        "scv2": 1,
        "timeseries": [
            {"timestamp": 0, "target_ts": 5, "rts1": 0, "rts2": 0},
            {"timestamp": 1, "target_ts": 6, "rts1": 1, "rts2": 0},
            {"timestamp": 2, "target_ts": 4, "rts1": 0, "rts2": 0}
        ]
    },
    {
        "id": 2,
        "scv1": 0,
        "scv2": 2,
        "timeseries": [
            {"timestamp": 2, "target_ts": 0, "rts1": 1, "rts2": 1},
            {"timestamp": 3, "target_ts": 4, "rts1": 1, "rts2": 0}
        ]
    }
]
```

每个项目在 JSON 中都表示为一个单独的条目。以下片段显示了相应的`time_series_data_config`（使用 JMESPath）。

```
"time_series_data_config": {
    "item_id": "[*].id",
    "timestamp": "[*].timeseries[].timestamp",
    "target_time_series": "[*].timeseries[].target_ts",
    "related_time_series": ["[*].timeseries[].rts1", "[*].timeseries[].rts2"],
    "static_covariates": ["[*].scv1", "[*].scv2"],
    "dataset_format": "item_records"
}
```

### 当 `dataset_format` 为 `timestamp_record` 时的时间序列数据配置
<a name="clarify-processing-job-data-format-time-series-tsrec"></a>

下面的示例使用了 `dataset_format` 的 `timestamp_record` 值。下面的 JSON 文件代表了前面的数据集。

```
[
    {"id": 1, "timestamp": 0, "target_ts": 5, "rts1": 0, "rts2": 0, "svc1": -1, "svc2": 1},
    {"id": 1, "timestamp": 1, "target_ts": 6, "rts1": 1, "rts2": 0, "svc1": -1, "svc2": 1},
    {"id": 1, "timestamp": 2, "target_ts": 4, "rts1": 0, "rts2": 0, "svc1": -1, "svc2": 1},
    {"id": 2, "timestamp": 2, "target_ts": 0, "rts1": 1, "rts2": 1, "svc1": 0, "svc2": 2},
    {"id": 2, "timestamp": 3, "target_ts": 4, "rts1": 1, "rts2": 0, "svc1": 0, "svc2": 2},
]
```

JSON 的每个条目代表一个时间戳，并对应一个项目。实施 `time_series_data_config` 如下所示：

```
{
    "item_id": "[*].id",
    "timestamp": "[*].timestamp",
    "target_time_series": "[*].target_ts",
    "related_time_series": ["[*].rts1"],
    "static_covariates": ["[*].scv1"],
    "dataset_format": "timestamp_records"
}
```

# 时间序列数据的端点请求
<a name="clarify-processing-job-data-format-time-series-request-jsonlines"></a>

Cl SageMaker arify 处理任务将数据序列化为任意 JSON 结构（MIME 类型:`application/json`）。为此，必须为分析配置 `content_template` 参数提供模板字符串。Clarify 处理 SageMaker 任务使用它来构造提供给您的模型的 JSON 查询。 `content_template`包含数据集中的一条或多条记录。您还必须为 `record_template` 提供模板字符串，用于构建每条记录的 JSON 结构。然后将这些记录插入 `content_template`。有关 `content_type` 或 `dataset_type` 的更多信息，请参阅 [分析配置文件](clarify-processing-job-configure-analysis.md)。

**注意**  
由于 `content_template` 和 `record_template` 是字符串参数，所以 JSON 序列化结构中任何属于该结构的双引号字符（“）都应该在您的配置中作为转义字符来处理。例如，如果要在 Python 中转义双引号，可以为 `content_template` 输入以下值：  

```
'$record'
```

下表列出了序列化 JSON 请求有效载荷的示例，以及构建它们所需的相应 `content_template` 和 `record_template` 参数。


| 使用案例 | 端点请求负载（字符串表示形式） | content\$1template | record\$1template | 
| --- | --- | --- | --- | 
|  每次单条记录  |  `{"target": [1, 2, 3],"start": "2024-01-01 01:00:00"}`  |  `'$record'`  |  `'{"start": $start_time, "target": $target_time_series}'`  | 
|  带 `$related_time_series` 和 `$static_covariates` 的单条记录  |  `{"target": [1, 2, 3],"start": "2024-01-01 01:00:00","dynamic_feat": [[1.0, 2.0, 3.0],[1.0, 2.0, 3.0],"cat": [0,1]}`  |  `'$record'`  |  `'{"start": $start_time, "target": $target_time_series, "dynamic_feat": $related_time_series, "cat": $static_covariates}'`  | 
|  多条记录  |  `{"instances": [{"target": [1, 2, 3],"start": "2024-01-01 01:00:00"}, {"target": [1, 2, 3],"start": "2024-01-01 02:00:00"}]}`  |  `'{"instances": $records}'`  |  `'{"start": $start_time, "target": $target_time_series}'`  | 
|  带 `$related_time_series` 和 `$static_covariates` 的多条记录  |  `{"instances": [{"target": [1, 2, 3],"start": "2024-01-01 01:00:00","dynamic_feat": [[1.0, 2.0, 3.0],[1.0, 2.0, 3.0],"cat": [0,1]}, {"target": [1, 2, 3],"start": "2024-01-01 02:00:00","dynamic_feat": [[1.0, 2.0, 3.0],[1.0, 2.0, 3.0],"cat": [0,1]}]}`  |  `'{"instances": $records}'`  |  `''{"start": $start_time, "target": $target_time_series, "dynamic_feat": $related_time_series, "cat": $static_covariates}'`  | 

# 时间序列数据的端点响应
<a name="clarify-processing-job-data-format-time-series-response-json"></a>

Clar SageMaker ify 处理任务将整个有效负载反序列化为 JSON。然后，它使用分析配置中提供的 JMESPath 表达式从反序列化数据中提取预测。响应负载中的记录必须与请求负载中的记录相匹配。

下表是一个只输出平均预测值的端点响应示例。[分析配置](https://docs.aws.amazon.com/sagemaker/latest/dg/clarify-processing-job-configure-analysis.html#clarify-processing-job-configure-analysis-parameters)中`predictor`字段中`forecast`使用的值应作为 JMESPath 表达式提供，以查找处理作业的预测结果。


| 端点请求负载 | 端点响应负载（字符串表示形式） | JMESPath 分析配置中的预测表达式 | 
| --- | --- | --- | 
|  单条记录示例。配置应为 `TimeSeriesModelConfig(forecast="prediction.mean")`，以便正确提取预测结果。  |  `'{"prediction": {"mean": [1, 2, 3, 4, 5]}'`  |  `'prediction.mean'`  | 
|  多条记录。 AWS DeepAR 端点响应。  |  `'{"predictions": [{"mean": [1, 2, 3, 4, 5]}, {"mean": [1, 2, 3, 4, 5]}]}'`  |  `'predictions[*].mean'`  | 

# 预先检查时间序列数据的端点请求和响应
<a name="clarify-processing-job-data-format-time-series-precheck"></a>

建议您将模型部署到 A SageMaker I 实时推理终端节点并向该终端节点发送请求。手动检查请求和响应，确保两者都符合 [时间序列数据的端点请求](clarify-processing-job-data-format-time-series-request-jsonlines.md) 和 [时间序列数据的端点响应](clarify-processing-job-data-format-time-series-response-json.md) 部分的要求。如果您的模型容器支持批量请求，您可以从单个记录请求开始，然后尝试两个或更多记录。

以下命令演示了如何使用 AWS CLI请求响应。已预先安装在 Studio 和 SageMaker 笔记本实例中。 AWS CLI 要安装 AWS CLI，请按照[安装指南](https://aws.amazon.com//cli/)进行操作。

```
aws sagemaker-runtime invoke-endpoint \
  --endpoint-name $ENDPOINT_NAME \
  --content-type $CONTENT_TYPE \
  --accept $ACCEPT_TYPE \
  --body $REQUEST_DATA \
  $CLI_BINARY_FORMAT \
  /dev/stderr 1>/dev/null
```

参数已定义，如下所示：
+ \$1ENDPOINT NAME：端点名称。
+ \$1CONTENT\$1TYPE：请求的 MIME 类型（模型容器输入）。
+ \$1ACCEPT\$1TYPE：响应（模型容器输出）的 MIME 类型。
+ \$1REQUEST\$1DATA：请求的有效载荷字符串。
+ \$1CLI\$1BINARY\$1FORMAT：命令行界面 (CLI) 参数的格式。对于 AWS CLI v1，此参数应保留为空。对于 v2，此参数应设置为 `--cli-binary-format raw-in-base64-out`。

**注意**  
AWS CLI 默认情况下，v2 将二进制参数作为 base64 编码的字符串传递。以下往返终端节点的请求和响应示例使用 AWS CLI v1。

------
#### [ Example 1 ]

在以下代码示例中，请求由单个记录组成。

```
aws sagemaker-runtime invoke-endpoint \
  --endpoint-name test-endpoint-json \
  --content-type application/json \
  --accept application/json \
  --body '{"target": [1, 2, 3, 4, 5],
    "start": "2024-01-01 01:00:00"}' \
/dev/stderr 1>/dev/null
```

以下代码片段展示了相应的响应输出。

```
{'predictions': {'mean': [1, 2, 3, 4, 5]}
```

------
#### [ Example 2 ]

在下面的代码示例中，请求包含两条记录。

```
aws sagemaker-runtime invoke-endpoint \
  --endpoint-name test-endpoint-json-2 \
  --content-type application/json \
  --accept application/json \
  --body $'{"instances": [{"target":[1, 2, 3],
    "start":"2024-01-01 01:00:00",
    "dynamic_feat":[[1, 2, 3, 4, 5],
        [1, 2, 3, 4, 5]]}], {"target":[1, 2, 3],
    "start":"2024-01-02 01:00:00",
    "dynamic_feat":[[1, 2, 3, 4, 5],
        [1, 2, 3, 4, 5]]}]}' \
dev/stderr 1>/dev/null
```

响应输出如下：

```
{'predictions': [{'mean': [1, 2, 3, 4, 5]}, {'mean': [1, 2, 3, 4, 5]}]}
```

------