

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

# 自定义模型的工作原理
<a name="canvas-build-model"></a>

使用 Amazon SageMaker Canvas 在您导入的数据集上构建自定义模型。使用您构建的模型对新数据进行预测。 SageMaker Canvas 使用数据集中的信息构建多达 250 个模型，然后选择性能最好的模型。

当您开始构建模型时，Canvas 会自动推荐一种或多种*模型类型*。模型类型可分为以下几类：
+ **数值预测** – 这在机器学习中被称为*回归*。要对数值数据进行预测时，请使用数值预测模型类型。例如，您可能想根据房屋面积等特征预测房屋价格。
+ **分类预测** – 这在机器学习中被称为*分类*。当您希望将数据分类成组时，请使用分类预测模型类型：
  + **2 类别预测** – 当您要对数据进行两个类别的预测时，请使用 2 类别预测模型类型（在机器学习中也称为*二元分类*）。例如，您可能希望确定客户是否可能流失。
  + **3\$1 类别预测** – 当您要对数据进行三个或更多类别的预测时，请使用 3\$1 类别预测模型类型（在机器学习中也称为*多元分类*）。例如，您可能希望根据以往的付款情况等特征来预测客户的贷款状态。
+ **时间序列预测** - 当您要对一段时间进行预测时，可使用时间序列预测。例如，您可能想要预测下一季度将销售的商品数量。有关时间序列预测的信息，请参阅 [Amazon SageMaker Canvas 中的时间序列预测](https://docs.aws.amazon.com/sagemaker/latest/dg/canvas-time-series.html)。
+ **图像预测** – 要为图像分配标签时，请使用单标签图像预测模型类型（在机器学习中也称为*单标签图像分类*）。例如，您可能希望对产品图片中不同类型的制造缺陷进行分类。
+ **文本预测** – 要为文本段落分配标签时，请使用多元文本预测模型类型（在机器学习中也称为*多元文本分类*）。例如，您可能有一个产品买家评论数据集，您想确定买家是喜欢还是不喜欢该产品。您可以让模型预测给定的文本段落是`Positive`、`Negative`还是`Neutral`。

有关每种模型类型支持的输入数据类型的表，请参阅[自定义模型](canvas-custom-models.md)。

对于您构建的每个表格数据模型（包括数值、分类、时间序列预测和文本预测模型），您可以选择**目标列**。**目标列**是包含要预测的信息的列。例如，如果您要构建一个模型来预测人们是否取消了订阅，则**目标列**包含的数据点为 `yes` 或 `no`，都与某人的取消状态有关。

对于图像预测模型，您可以使用已分配标签的图像数据集来构建模型。对于您提供的未标注图像，模型会预测一个标签。例如，如果您要构建模型来预测图像是猫还是狗，则在构建模型时需要提供标注为猫或狗的图像。然后，模型可以接受未标注的图像并将其预测为猫或狗。

**在构建模型时发生的情况**

要构建模型，您可以选择**快速构建**或**标准构建**。**快速构建**的构建时间较短，但**标准构建**的精度通常更高。

对于表格预测模型和时间序列预测模型，Canvas 使用*缩减采样*来分别减小超过 5 GB 或 30 GB 的数据集的大小。Canvas 采用分层采样方法进行缩减采样。下表列出了按模型类型列出的缩减采样的大小。要控制采样过程，您可以使用 Canvas 中的 Data Wrangler，使用自己喜欢的采样技术进行采样。对于时间序列数据，您可以通过重新采样来汇总数据点。有关采样的更多信息，请参阅 [采样](canvas-transform.md#canvas-transform-sampling)。有关对时间序列数据进行重新采样的更多信息，请参阅 [重新采样时间序列数据](canvas-transform.md#canvas-resample-time-series)。

如果您选择在超过 50000 行的数据集上进行**快速构建**，则 Canvas 会将数据采样到 50000 行，从而缩短模型训练时间。

下表总结了模型构建过程的主要特征，包括每个模型和构建类型的平均构建时间、使用大型数据集构建模型时的缩减采样大小，以及每个构建类型所需的最少和最多数据点数量。


| 限制 | 数值预测和分类预测 | 时间序列预测 | 图像预测 | 文本预测 | 
| --- | --- | --- | --- | --- | 
| **快速构建**时间 | 2‐20 分钟 | 2‐20 分钟 | 15‐30 分钟 | 15‐30 分钟 | 
| **标准构建**时间 | 2‐4 小时 | 2‐4 小时 | 2‐5 小时 | 2‐5 小时 | 
| 缩减采样大小（Canvas 缩减采样后大型数据集的大小减小） | 5 GB | 30 GB | 不适用 | 不适用 | 
| **快速构建**的最小条目（行）数 |  2 类别：500 行 3\$1 类别、数值、时间序列：不适用  | 不适用 | 不适用 | 不适用 | 
| **标准构建**的最小条目数（行、图像或文档） | 250 | 50 | 50 | 不适用 | 
| **快速构建**的最大条目数（行、图像或文档） | 不适用 | 不适用 | 5000 | 7500 | 
| **标准构建**的最大条目数（行、图像或文档） | 不适用 | 15万 | 180,000 | 不适用 | 
| 最大列数 | 1000 | 1000 | 不适用 | 不适用 | 

Canvas 使用数据集其余部分中的信息来预测值，具体取决于模型类型：
+ 对于分类预测，Canvas 将每行归入**目标列**中列出的类别之一。
+ 对于数值预测，Canvas 使用数据集中的信息来预测**目标列**中的数值。
+ 对于时间序列预测，Canvas 使用历史数据来预测未来**目标列**的值。
+ 对于图像预测，Canvas 使用已分配标签的图像来预测未标注图像的标签。
+ 对于文本预测，Canvas 会分析已分配标签的文本数据，以预测未标注文本段落的标签。

**有助于您构建模型的其他功能**

在构建模型之前，您可以使用 Canvas 中的 Data Wrangler，使用 300 多种内置转换和运算符准备数据。Data Wrangler 支持表格数据集和映像数据集的转换。此外，您还可以连接到 Canvas 以外的数据来源，创建作业对整个数据集进行转换，并导出经过充分准备和清理的数据，以用于 Canvas 之外的 ML 工作流程。有关更多信息，请参阅 [数据准备](canvas-data-prep.md)。

要查看可视化和分析结果以了解数据并确定在模型中包含哪些功能，您可以使用 Data Wrangler 的内置分析功能。您还可以访问**数据质量和见解报告**，此报告重点介绍了数据集的潜在问题，并提供了如何解决这些问题的建议。有关更多信息，请参阅 [进行探索性数据分析 (EDA)](canvas-analyses.md)。

除了 Data Wrangler 提供的高级数据准备和探索功能外，Canvas 还提供了一些可供您使用的基本功能：
+ 要过筛选数据并访问一组基本数据转换，请参阅 [为模型构建准备数据](canvas-prepare-data.md)。
+ 要访问用于功能探索的简单可视化和分析，请参阅 [数据探索和分析](canvas-explore-data.md)。
+ 要进一步了解其他功能，例如预览模型、验证数据集以及更改用于构建模型的随机样本的大小，请参阅[预览模型](canvas-preview-model.md)。

对于包含多列的表格数据集（例如用于构建分类、数值或时间序列预测模型类型的数据集），可能存在缺少数据点的行。当 Canvas 构建模型时，它会自动添加缺失值。Canvas 使用数据集中的值对缺失值进行数学近似计算。为了获得最高的模型精度，我们建议您在能找到缺失数据的情况下将其添加进来。请注意，文本预测或图像预测模型不支持缺失数据特征。

**开始使用**

要开始构建自定义模型，请参阅[构建模型](canvas-build-model-how-to.md)，按照要构建的模型类型的相应步骤进行操作。

# 预览模型
<a name="canvas-preview-model"></a>

**注意**  
以下功能仅适用于使用表格数据集构建的自定义模型。多元文本预测模型也排除在外。

SageMaker Canvas 为您提供了一种工具，可以在开始构建之前预览模型。这样，您就可以估算出准确性分数，还可以初步了解每一列可能对模型产生的影响。

要预览模型分数，请在模型的**构建**选项卡中选择**预览模型**。

模型预览会生成**估计准确性**，预测模型分析数据的准确性。**快速构建**或**标准构建**的精度代表模型在实际数据上的表现，通常高于**估计精度**。

模型预览还提供了**列影响**分数，可以表明每一列对模型预测的重要性。

下面的界面截图显示了 Canvas 应用程序中的模型预览效果。

![\[Canvas 中模型的构建选项卡的屏幕截图。\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/studio/canvas/canvas-build/canvas-build-preview-model.png)


Amazon SageMaker Canvas 在构建模型时会自动处理数据集中的缺失值。它通过使用数据集中存在的相邻值来推断缺失值。

如果您对模型预览感到满意，并希望继续构建模型，请参阅 [构建模型](canvas-build-model-how-to.md)。

# 数据验证
<a name="canvas-dataset-validation"></a>

在构建模型之前， SageMaker Canvas 会检查您的数据集是否存在可能导致构建失败的问题。如果 SageMaker Canvas 发现任何问题，它会在您尝试**构建**模型之前在 “构建” 页面上向您发出警告。

您可以选择**验证数据**以查看数据集问题列表。然后，您可以使用 Can SageMaker vas [Data Wrangler 数据准备功能](canvas-data-prep.md)或您自己的工具在开始构建之前修复数据集。如果您不修复数据集的问题，那么您的构建就会失败。

如果您为了修复问题而对数据集进行了更改，则可以选择在尝试构建之前重新验证数据集。我们建议您在构建模型之前重新验证数据集。

下表显示了 SageMaker Canvas 在您的数据集中检查的问题以及如何解决这些问题。


| 问题 | 解决方案 | 
| --- | --- | 
|  数据的模型类型错误  |  尝试其他模型类型或使用不同的数据集。  | 
|  目标列中缺少值  |  替换缺失值，删除有缺失值的行，或使用不同的数据集。  | 
|  目标列中的唯一标签太多  |  验证您是否为目标列使用了正确的列，或者使用不同的数据集。  | 
|  目标列中的非数字值太多  |  选择不同的目标列，选择其他模型类型或使用不同的数据集。  | 
|  一个或多个列名包含双下划线  |  重命名这些列以删除所有双下划线，然后重试。  | 
|  数据集中没有一行是完整的  |  替换缺失值，或使用不同的数据集。  | 
|  对于数据中的行数来说，唯一标签太多  |  检查您使用的目标列是否正确，增加数据集中的行数，合并相似的标签或使用不同的数据集。  | 

# 随机抽样
<a name="canvas-random-sample"></a>

SageMaker Canvas 使用随机采样方法对您的数据集进行采样。随机抽样方法意味着每行被选取为样本的几率相等。您可以在预览中选择一列以获取随机样本的汇总统计数据，例如均值和模式。

默认情况下，对于行数超过 20,000 的数据集， SageMaker Canvas 使用数据集中随机抽样大小为 20,000 行。对于小于 2 万行的数据集，默认样本大小为数据集中的行数。您可以通过在 C SageMaker anvas 应用程序的 “**构建**” 选项卡中选择 “**随机样本**” 来增加或减少样本量。您可以使用滑块选择所需的样本量，然后选择**更新**来更改样本量。您可以为数据集选择的最大样本量为 4 万行，最小样本量为 500 行。如果您选择较大的样本量，则数据集预览和汇总统计数据可能需要一些时间才能重新加载。

**构建**页面显示数据集中 100 行数据的预览。如果样本量与数据集大小相同，那么预览将使用数据集的前 100 行数据。否则，预览将使用随机样本的前 100 行数据。

# 构建模型
<a name="canvas-build-model-how-to"></a>

以下几节介绍如何为每种主要类型的自定义模型构建模型。
+ 要构建数值预测、2 类别预测或 3\$1 类别预测模型，请参阅[构建自定义的数值或分类预测模型](#canvas-build-model-numeric-categorical)。
+ 要构建单标签图像预测模型，请参阅[构建自定义图像预测模型](#canvas-build-model-image)。
+ 要构建多元文本预测模型，请参阅[构建自定义文本预测模型](#canvas-build-model-text)。
+ 要构建时间序列预测模型，请参阅 [建立时间序列预测模型](#canvas-build-model-forecasting)。

**注意**  
如果您在构建后分析期间遇到错误，提示您增加 `ml.m5.2xlarge` 实例限额，请参阅[申请增加限额](https://docs.aws.amazon.com/sagemaker/latest/dg/canvas-requesting-quota-increases.html)。

## 构建自定义的数值或分类预测模型
<a name="canvas-build-model-numeric-categorical"></a>

数值和分类预测模型同时支持**快速构建**和**标准构建**。

要构建数值或分类预测模型，请按以下步骤操作：

1. 打开 SageMaker 画布应用程序。

1. 在左侧导航窗格中，选择**我的模型**。

1. 选择**新建模型**。

1. 在**创建新模型**对话框中，执行以下操作：

   1. 在**模型名称**字段中输入名称。

   1. 选择**预测分析**问题类型。

   1. 选择**创建**。

1. 对于**选择数据集**，从数据集列表中选择您的数据集。如果您尚未导入数据，请选择**导入**以指导您完成导入数据工作流。

1. 如果您已准备好开始构建模型，请选定**选择数据集**。

1. 在**构建**选项卡的**目标列**下拉列表中，为模型选择要预测的目标。

1. 对于**模型类型**，Canvas 会自动为您检测问题类型。如果您要更改类型或配置高级模型设置，请选择**配置模型**。

   当**配置模型**对话框打开时，执行以下操作：

   1. 对于**模型类型**，选择要构建的模型类型。

   1. 选择模型类型后，还有其他**高级设置**。有关各项高级设置的更多信息，请参阅 [高级模型构建配置](canvas-advanced-settings.md)。要配置高级设置，执行以下操作：

      1. （可选）在**目标指标**下拉菜单中，选择您希望 Canvas 在构建模型时优化的指标。如果您没有选择指标，Canvas 会默认为您选择一个指标。有关这些指标的说明，请参阅 [指标参考](canvas-metrics.md)。

      1. 对于**训练方法**，选择**自动**、**集合**或**超参数优化 (HPO) 模式**。

      1. 对于**算法**，选择要包含的用于构建候选模型的算法。

      1. 对于**数据拆分**，请按百分比指定如何在**训练集**和**验证集**之间如何拆分数据。训练集用于构建模型，而验证集用于测试候选模型的准确性。

      1. 对于**最大候选数和运行时**，执行以下操作：

         1. 设置**最大候选数值**或 Canvas 可以生成的候选模型的最大数量。请注意，**最大候选值**仅在 HPO 模式下可用。

         1. 为**最大作业运行时**设置小时和分钟值，或者 Canvas 可以用于构建模型的最长时间。超过最长时间后，Canvas 会停止构建，并选择最佳候选模型。

   1. 配置完高级设置后，选择**保存**。

1. 选择或取消选择数据中的列，以便在构建时包含或删除这些列。
**注意**  
如果您在构建模型后使用模型进行批量预测，Canvas 会将删除的列添加到您的预测结果中。但是，Canvas 不会将删除的列添加到时间序列模型的批量预测中。

1. （可选）使用 Canvas 提供的可视化和分析工具将数据可视化，并确定您可能希望在模型中包含哪些特征。有关更多信息，请参阅[探索和分析数据](https://docs.aws.amazon.com/sagemaker/latest/dg/canvas-explore-data.html)。

1. （可选）使用数据转换功能来清理、转换和准备用于构建模型的数据。有关更多信息，请参阅[使用高级转换准备数据](https://docs.aws.amazon.com/sagemaker/latest/dg/canvas-prepare-data.html)。您可以通过选择**模型配方**打开**模型配方**侧面板来查看和移除转换。

1. （可选）有关其他功能，如预览模型的准确性、验证数据集以及更改 Canvas 从数据集中抽取的随机样本的大小，请参阅[预览模型](canvas-preview-model.md)。

1. 查看数据并对数据集进行任何更改后，选择**快速构建**或**标准构建**，开始构建模型。以下屏幕截图显示了**构建**页面以及**快速构建**和**标准构建**选项。  
![\[2 类别模型的构建页面，显示了快速构建和标准构建选项。\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/studio/canvas/build-page-tabular-quick-standard-options.png)

模型开始构建后，您可以离开此页面。当模型在**我的模型**页面上显示为**就绪**时，即可进行分析和预测。

## 构建自定义图像预测模型
<a name="canvas-build-model-image"></a>

单标签图像预测模型同时支持**快速构建**和**标准构建**。

要构建单标签图像预测模型，请按以下步骤操作：

1. 打开 SageMaker 画布应用程序。

1. 在左侧导航窗格中，选择**我的模型**。

1. 选择**新建模型**。

1. 在**创建新模型**对话框中，执行以下操作：

   1. 在**模型名称**字段中输入名称。

   1. 选择**图像分析**问题类型。

   1. 选择**创建**。

1. 对于**选择数据集**，从数据集列表中选择您的数据集。如果您尚未导入数据，请选择**导入**以指导您完成导入数据工作流。

1. 如果您已准备好开始构建模型，请选定**选择数据集**。

1. 在**构建**选项卡上，您可以看到数据集中图像的**标签分布**。**模型类型**设置为**单标签图像预测**。

1. 在此页面上，您可以预览图像并编辑数据集。如果您有任何未标注的图像，请选择**编辑数据集**和[向未标注的图像分配标签](canvas-edit-image.md#canvas-edit-image-assign)。您还可以在[编辑图像数据集](canvas-edit-image.md)时执行其他任务，例如重命名标签和向数据集添加图像。

1. 查看数据并对数据集进行任何更改后，选择**快速构建**或**标准构建**，开始构建模型。以下屏幕截图显示了准备构建的图像预测模型的**构建**页面。  
![\[单标签图像预测模型的构建页面。\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/studio/canvas/build-page-image-model.png)

模型开始构建后，您可以离开此页面。当模型在**我的模型**页面上显示为**就绪**时，即可进行分析和预测。

## 构建自定义文本预测模型
<a name="canvas-build-model-text"></a>

多元文本预测模型同时支持**快速构建**和**标准构建**。

要构建文本预测模型，请按以下步骤操作：

1. 打开 SageMaker 画布应用程序。

1. 在左侧导航窗格中，选择**我的模型**。

1. 选择**新建模型**。

1. 在**创建新模型**对话框中，执行以下操作：

   1. 在**模型名称**字段中输入名称。

   1. 选择**文本分析**问题类型。

   1. 选择**创建**。

1. 对于**选择数据集**，从数据集列表中选择您的数据集。如果您尚未导入数据，请选择**导入**以指导您完成导入数据工作流。

1. 如果您已准备好开始构建模型，请选定**选择数据集**。

1. 在**构建**选项卡的**目标列**下拉列表中，为模型选择要预测的目标。目标列必须具有二进制或分类数据类型，并且目标列中的每个唯一标签必须至少有 25 个条目（或数据行）。

1. 对于**模型类型**，确认模型类型自动设置为**多元文本预测**。

1. 对于训练列，选择文本数据的源列。这应该是包含要分析的文本的列。

1. 选择**快速构建**或**标准构建**，开始构建模型。以下屏幕截图显示了准备构建的文本预测模型的**构建**页面。  
![\[多元文本预测模型的构建页面。\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/studio/canvas/build-page-text-model.png)

模型开始构建后，您可以离开此页面。当模型在**我的模型**页面上显示为**就绪**时，即可进行分析和预测。

## 建立时间序列预测模型
<a name="canvas-build-model-forecasting"></a>

时间序列预测模型支持**快速构建**和**标准构建**。

要建立时间序列预测模型，请按照以下步骤操作：

1. 打开 SageMaker 画布应用程序。

1. 在左侧导航窗格中，选择**我的模型**。

1. 选择**新建模型**。

1. 在**创建新模型**对话框中，执行以下操作：

   1. 在**模型名称**字段中输入名称。

   1. 选择**时间序列预测**问题类型。

   1. 选择**创建**。

1. 对于**选择数据集**，从数据集列表中选择您的数据集。如果您尚未导入数据，请选择**导入**以指导您完成导入数据工作流。

1. 如果您已准备好开始构建模型，请选定**选择数据集**。

1. 在**构建**选项卡的**目标列**下拉列表中，为模型选择要预测的目标。

1. 在**模型类型**部分，选择**配置模型**。

1. 此时将打开**配置模型**框。在**时间序列配置**部分，填写以下字段：

   1. 在**项目 ID 列**中，选择数据集中唯一标识每一行的列。该列的数据类型应为 `Text`。

   1. （可选）对于**分组列**，选择一个或多个要用于对预测值进行分组的分类列（数据类型为 `Text`）。

   1. 对于**时间戳列**，选择带有时间戳（采用日期时间格式）的列。有关可接受的日期时间格式的更多信息，请参阅 [Amazon C SageMaker anvas 中的时间序列预测](canvas-time-series.md)。

   1. 在**预测长度**字段中，输入您想要预测值的时间段。Canvas 会自动检测数据中的时间单位。

   1. （可选）打开**使用假期时间表**开关，选择不同国家/区域的假期时间表，使您的假期数据预测更加准确。

1. 在**配置模型**框中，**高级**部分还有其他设置。有关各项高级设置的更多信息，请参阅 [高级模型构建配置](canvas-advanced-settings.md)。要配置**高级**设置，执行以下操作：

   1. 在**目标指标**下拉菜单中，选择您希望 Canvas 在构建模型时优化的指标。如果您没有选择指标，Canvas 会默认为您选择一个指标。有关这些指标的说明，请参阅 [指标参考](canvas-metrics.md)。

   1. 如果您运行的是标准构建，则您会看到**算法**部分。本部分用于选择您要用于构建模型的时间序列预测算法。您可以从可用算法中选择一个子集，如果您不确定要尝试哪些算法，也可以选择所有算法。

      当您运行标准构建时，Canvas 会构建一个集合模型，将所有算法结合在一起，以优化预测准确性。
**注意**  
如果您正在运行快速构建，Canvas 会使用一种基于树的学习算法来训练您的模型，您无需选择任何算法。

   1. 对于**预测分位数**，最多输入 5 个以逗号分隔的分位数，以指定预测的上下限。

   1. 配置完**高级**设置后，选择**保存**。

1. 选择或取消选择数据中的列，以便在构建时包含或删除这些列。
**注意**  
如果您在构建模型后使用模型进行批量预测，Canvas 会将删除的列添加到您的预测结果中。但是，Canvas 不会将删除的列添加到时间序列模型的批量预测中。

1. （可选）使用 Canvas 提供的可视化和分析工具将数据可视化，并确定您可能希望在模型中包含哪些特征。有关更多信息，请参阅[探索和分析数据](https://docs.aws.amazon.com/sagemaker/latest/dg/canvas-explore-data.html)。

1. （可选）使用数据转换功能来清理、转换和准备用于构建模型的数据。有关更多信息，请参阅[使用高级转换准备数据](https://docs.aws.amazon.com/sagemaker/latest/dg/canvas-prepare-data.html)。您可以通过选择**模型配方**打开**模型配方**侧面板来查看和移除转换。

1. （可选）有关其他功能，如预览模型的准确性、验证数据集以及更改 Canvas 从数据集中抽取的随机样本的大小，请参阅[预览模型](canvas-preview-model.md)。

1. 查看数据并对数据集进行任何更改后，选择**快速构建**或**标准构建**，开始构建模型。

模型开始构建后，您可以离开此页面。当模型在**我的模型**页面上显示为**就绪**时，即可进行分析和预测。

# 高级模型构建配置
<a name="canvas-advanced-settings"></a>

Amazon SageMaker Canvas 支持各种高级设置，您可以在构建模型时配置这些设置。下一页列出了所有高级设置及其选项和配置的其他信息。

**注意**  
以下高级设置目前仅支持数字、分类和时间序列预测模型类型。

## 高级数字和分类预测模型设置
<a name="canvas-advanced-settings-predictive"></a>

Canvas 支持以下数字和分类预测模型类型的高级设置。

### 目标指标
<a name="canvas-advanced-settings-predictive-obj-metric"></a>

目标指标是您希望 Canvas 在构建模型时进行优化的指标。如果您没有选择指标，Canvas 会默认为您选择一个指标。有关这些指标的说明，请参阅 [指标参考](canvas-metrics.md)。

### 训练模型
<a name="canvas-advanced-settings-predictive-method"></a>

Canvas 可以根据数据集大小自动选择训练方法，您也可以手动选择。您可以选择以下训练方法：
+ **组合** — SageMaker AI 利用该 AutoGluon 库来训练多个基础模型。为了找到最适合您的数据集的组合，组合模式使用不同的模型和元参数设置运行 5-10 次试验。然后，使用堆叠组合方法，将这些模型组合在一起，创建最优预测模型。有关表格数据组合模式支持的算法列表，请参阅以下 [算法](#canvas-advanced-settings-predictive-algos) 部分。
+ **超参数优化 (HPO)** — SageMaker AI 在数据集上运行训练作业时使用贝叶斯优化或多保真度优化来调整超参数，从而找到模型的最佳版本。HPO 模式选择与您的数据集最相关的算法，并选择最佳的超参数范围来调整您的模型。为了调整模型，HPO 模式最多可运行 100 次试验（默认），以找到选定范围内的最佳超参数设置。如果您的数据集大小小于 100 MB， SageMaker AI 将使用贝叶斯优化。 SageMaker 如果您的数据集大于 100 MB，AI 会选择多保真度优化。

  有关表格数据 HPO 模式支持的算法列表，请参阅以下 [算法](#canvas-advanced-settings-predictive-algos) 部分。
+ **自动** — SageMaker AI 会根据您的数据集大小自动选择集合模式或 HPO 模式。如果您的数据集大于 100 MB， SageMaker AI 会选择 HPO 模式。否则，它会选择组合模式。

### 算法
<a name="canvas-advanced-settings-predictive-algos"></a>

在**组合**模式下，Canvas 支持以下机器学习算法：
+ [LightGBM](https://docs.aws.amazon.com/sagemaker/latest/dg/lightgbm.html) – 一种经过优化的框架，使用基于树的算法和梯度提升。此算法使用在广度而不是深度上增长的树，并且针对速度进行了高度优化。
+ [CatBoost](https://docs.aws.amazon.com/sagemaker/latest/dg/catboost.html)— 一种使用基于树的算法和梯度提升的框架。针对处理分类变量进行了优化。
+ [XGBoost](https://docs.aws.amazon.com/sagemaker/latest/dg/xgboost.html)— 一种使用基于树的算法的框架，其梯度提升是深度而不是广度增加的。
+ [随机森林](https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.RandomForestClassifier.html) – 一种基于树的算法，在数据的随机子样本上使用多个决策树并进行替换。树在每个级别上拆分到最佳节点。对每个树的决策一起求平均值，以防止过度拟合并改善预测。
+ [额外的树](https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.ExtraTreesClassifier.html#sklearn.ensemble.ExtraTreesClassifier) – 基于树的算法，在整个数据集上使用多个决策树。树在每个级别上随机拆分。对每个树的决策进行求平均值，以防止过度拟合并改善预测。与随机森林算法相比，额外的树会增加一定程度的随机化。
+ [线性模型](https://scikit-learn.org/stable/modules/classes.html#module-sklearn.linear_model) – 一种使用线性方程对所观测数据中两个变量之间的关系进行建模的框架。
+ 神经网络 torch – 使用 [Pytorch](https://pytorch.org/) 实施的神经网络模型。
+ 神经网络 fast.ai – 使用 [fast.ai](https://www.fast.ai/) 实施的神经网络模型。

在 **HPO 模式**下，Canvas 支持以下机器学习算法：
+ [XGBoost](https://docs.aws.amazon.com/sagemaker/latest/dg/xgboost.html)— 一种监督学习算法，它试图通过组合来自一组更简单和更弱的模型的估计值来准确预测目标变量。
+ 深度学习算法 – 多层感知器 (MLP) 和前馈人工神经网络。此算法可以处理线性不可分的数据。

### 数据拆分
<a name="canvas-advanced-settings-predictive-split"></a>

您可以选择指定如何在训练集（数据集中用于构建模型的部分）和验证集（数据集中用于验证模型准确性的部分）之间拆分数据集。例如，常见的拆分比例是 80% 的训练数据和 20% 的验证数据，其中 80% 的数据用于构建模型，而 20% 的数据用于衡量模型性能。如果您未指定自定义比例，Canvas 会自动拆分数据集。

### 最大候选模型数量
<a name="canvas-advanced-settings-predictive-candidates"></a>

**注意**  
此功能仅在 HPO 训练模式下可用。

您可以指定 Canvas 在构建模型时生成的最大候选模型数量。我们建议您使用默认的候选模型数量（100）来构建最准确的模型。您最多可指定 250 个。减少候选模型的数量可能会影响模型的准确性。

### 最长作业运行时
<a name="canvas-advanced-settings-predictive-runtime"></a>

您可以指定最大作业运行时，或者 Canvas 用于构建模型的最长时间。时间限制过后，Canvas 会停止构建，并选择最佳候选模型。

您可指定的最长时间为 720 小时。我们强烈建议您将最大作业运行时保持在 30 分钟以上，以确保 Canvas 有足够的时间生成候选模型并完成模型构建。

## 高级时间序列预测模型设置
<a name="canvas-advanced-settings-time-series"></a>

对于时间序列预测模型，Canvas 支持上一节列出的目标指标。

时间序列预测模型还支持以下高级设置：

### 算法选择
<a name="canvas-advanced-settings-time-series-algos"></a>

当您构建时间序列预测模型时，Canvas 会使用统计和机器学习算法的*集合*（或组合）来提供高度准确的时间序列预测。默认情况下，Canvas 会根据数据集中的时间序列选择所有可用算法的最佳组合。但是，您可以选择指定一种或多种算法用于预测模型。在这种情况下，Canvas 将仅使用您选择的算法来确定最佳混合效果。如果您不确定选择哪种算法来训练模型，我们建议您选择所有可用的算法。

**注意**  
算法选择仅支持标准构建。如果您未在高级设置中选择任何算法，则默认情况下， SageMaker AI 会运行快速构建，并使用基于树的学习算法训练候选模型。有关快速构建和标准构建之间的差别的更多信息，请参阅 [自定义模型的工作原理](canvas-build-model.md)。

Canvas 支持以下时间序列预测算法：
+ [自回归整合移动平均线 (ARIMA)](https://en.wikipedia.org/wiki/Autoregressive_integrated_moving_average)：一种简单的随机时间序列模型，利用统计分析来解释数据并预测未来。这种算法适用于小于 100 个时间序列的简单数据集。
+ [卷积神经网络 - 分位数回归 (CNN-QR)](https://docs.aws.amazon.com/forecast/latest/dg/aws-forecast-algo-cnnqr.html)：一种专有的有监督学习算法，可从大量时间序列中训练一个全局模型，并使用分位数解码器进行预测。CNN-QR 最适合处理包含数百个时间序列的大型数据集。
+ [Deepar\$1](https://docs.aws.amazon.com/forecast/latest/dg/aws-forecast-recipe-deeparplus.html) — 一种专有的监督学习算法，用于预测标量时间序列，使用循环神经网络 (RNNs) 在所有时间序列中联合训练单个模型。DeepAR\$1 最适合处理包含数百个特征时间序列的大型数据集。
+ [非参数时间序列 (NPTS)](https://docs.aws.amazon.com/forecast/latest/dg/aws-forecast-recipe-npts.html)：一种可扩展的概率基线预测器，可通过从过去的观测数据中采样，预测给定时间序列的未来值分布。NPTS 在处理稀疏或间歇性时间序列时非常有用（例如，在时间序列有许多 0 或低计数的情况下，预测对单个项目的需求）。
+ [指数平滑法 (ETS)](https://en.wikipedia.org/wiki/Exponential_smoothing)：一种预测方法，预测结果是过去观测数据的加权平均值，其中较早观测数据的权重呈指数级下降。此算法适用于时间序列少于 100 个的简单数据集和具有季节性规律的数据集。
+ [Prophet](https://facebook.github.io/prophet/)：一种加法回归模型，最适用于具有强烈季节效应和多季历史数据的时间序列。此算法适用于具有接近极限的非线性增长趋势的数据集。

### 预测分位数
<a name="canvas-advanced-settings-time-series-quantiles"></a>

对于时间序列预测， SageMaker AI 使用您的目标时间序列训练 6 个候选模型。然后， SageMaker AI 使用堆叠集成方法组合这些模型，为给定的目标指标创建最佳预测模型。每个预测模型都通过生成分位数在 P1 和 P99 之间的预测来生成概率预测。这些分位数用于解释预测的不确定性。默认情况下，为 0.1 (`p10`)、0.5 (`p50`) 和 0.9 (`p90`) 生成预测。您可以选择从 0.01 (`p1`) 到 0.99 (`p99`)，以 0.01 或更高的增量指定最多 5 个分位数。

# 编辑图像数据集
<a name="canvas-edit-image"></a>

在 Amazon SageMaker Canvas 中，您可以在构建模型之前编辑图像数据集并查看标签。您可能需要执行一些任务，例如为未标注的图像分配标签或向数据集中添加更多图像。这些任务都可以在 Canvas 应用程序中完成，为您提供了一个修改数据集和构建模型的地方。

**注意**  
在构建模型之前，必须为数据集中的所有图像分配标签。此外，每个标签必须至少有 25 张图像，且至少有两个标签。有关分配标签的更多信息，请参阅本页上名为**向未标注图像分配标签**的部分。如果您无法确定图像的标签，则应将其从数据集中删除。有关删除图像的更多信息，请参阅本页上的[在数据集中添加或删除图像](#canvas-edit-image-add-delete)部分。

要开始编辑图像数据集，您应该在构建单标签图像预测模型时进入**构建**选项卡。

这将打开一个新页面，其中显示数据集中的图像及其标签。此页面将图像数据集分为**总图像**、**已标注图像**和**未标注图像**。您也可以查看**数据集准备指南**，了解有关构建更准确的图像预测模型的最佳实践。

以下屏幕截图显示了用于编辑图像数据集的页面。

![\[Canvas 中图像数据集管理页面的屏幕截图。\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/studio/canvas/dataset-management-page.png)


在此页面中，您可以执行以下操作。

## 查看每张图像的属性（标签、大小、尺寸）
<a name="canvas-edit-image-view"></a>

要查看单张图像，可以在搜索栏中按文件名进行搜索。然后，选择图像以打开完整视图。您可以查看图像属性并重新分配图像的标签。查看完图像后，选择**保存**。

## 添加、重命名或删除数据集中的标签
<a name="canvas-edit-image-labels"></a>

Canvas 在左侧导航窗格中列出了数据集的标签。通过在**添加标签**文本字段中输入标签，可以向数据集添加新标签。

要重命名或删除数据集中的标签，请选择标签旁边的**更多选项**图标 (![\[Vertical ellipsis icon representing a menu or more options.\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/studio/canvas/more-options-icon.png))，然后选择**重命名**或**删除**。如果重命名标签，则可以输入新的标签名称并选择**确认**。如果删除标签，则该标签将从数据集中所有带有该标签的图像中移除。任何带有该标签的映像都被取消标注。

## 向未标注的图像分配标签
<a name="canvas-edit-image-assign"></a>

要查看数据集中未标注的图像，请在左侧导航窗格中选择**未标注**。对于每张图像，将其选中并打开标题为**未标注**的标签，然后从下拉列表中选择要分配给该图像的标签。您也可以选择多张图像并执行此操作，然后为所有选定的图像分配您选择的标签。

## 为图像重新分配标签
<a name="canvas-edit-image-reassign"></a>

您可以通过选择图像（或一次选择多张图像）并打开标题为当前标签的下拉列表，为图像重新分配标签。选择所需的标签，然后使用新标签更新一张或多张图像。

## 按标签对图像进行排序
<a name="canvas-edit-image-sort"></a>

您可以通过在左侧导航窗格中选择标签来查看给定标签的所有图像。

## 在数据集中添加或删除图像
<a name="canvas-edit-image-add-delete"></a>

您可以通过在顶部导航窗格中选择**添加图像**来向数据集添加更多图像。系统将引导您完成导入更多图像的工作流。您导入的图像将添加到现有数据集中。

您可以从数据集中删除图像，方法是选择图像，然后在顶部导航窗格中选择**删除**。

**注意**  
对数据集进行任何更改后，请选择**保存数据集**以确保所做的更改不会丢失。

# 数据探索和分析
<a name="canvas-explore-data"></a>

**注意**  
您只能对基于表格数据集构建的模型使用 SageMaker Canvas 可视化和分析。多元文本预测模型也排除在外。

在 Amazon SageMaker Canvas 中，您可以使用可视化和分析来探索数据集中的变量，并创建应用程序内的可视化和分析。在构建模型之前，您可以利用这些探索来发现变量之间的关系。

有关 Canvas 中可视化技术的更多信息，请参阅[使用可视化技术探索数据](canvas-explore-data-visualization.md)。

有关 Canvas 中分析功能的更多信息，请参阅[使用分析功能来探索数据](canvas-explore-data-analytics.md)。

# 使用可视化技术探索数据
<a name="canvas-explore-data-visualization"></a>

**注意**  
只能对基于表格数据集构建的模型使用 SageMaker Canvas 可视化。多元文本预测模型也排除在外。

借助 Amazon SageMaker Canvas，您可以探索和可视化数据，以便在构建机器学习模型之前获得对数据的高级见解。您可以使用散点图、条形图和方框图进行可视化，这有助于您了解数据，并发现可能影响模型准确性的特征之间的关系。

在 SageMaker Canvas 应用程序的 “**构建**” 选项卡中，选择**数据可视化工具**开始创建您的可视化效果。

您可以更改可视化样本大小，以调整从数据集中抽取的随机样本的大小。样本量过大可能会影响数据可视化的性能，因此我们建议您选择适当的样本量。要更改样本量，请按照下列过程操作。

1. 选择**可视化样本**。

1. 使用滑块选择所需的样本量。

1. 选择**更新**以确认对样本量的更改。

**注意**  
某些可视化技术需要特定数据类型的列。例如，对于散点图的 x 轴和 y 轴，只能使用数值列。

## 散点图
<a name="canvas-explore-data-scatterplot"></a>

要使用您的数据集创建散点图，请在**可视化**面板中选择**散点图**。从**列**部分中选择要在 x 轴和 y 轴上绘制的特征。您可以将列拖放到坐标轴上，或者拖放坐标轴后，可以从支持的列列表中选择一列。

您可以使用**着色依据**根据第三个特征为绘图上的数据点着色。您也可以使用**分组依据**根据第四个特征将数据分组到单独的绘图中。

下图显示了使用**着色依据**和**分组依据**的散点图。在此示例中，每个数据点都按 `MaritalStatus` 特征着色，按 `Department` 特征分组会生成每个部门的数据点的散点图。

![\[Canvas 应用程序的数据可视化工具视图中散点图的屏幕截图。\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/studio/canvas/canvas-eda-scatter-plot.png)


## 条形图
<a name="canvas-explore-data-barchart"></a>

要使用您的数据集创建条形图，请在**可视化**面板中选择**条形图**。从**列**部分中选择要在 x 轴和 y 轴上绘制的特征。您可以将列拖放到坐标轴上，或者拖放坐标轴后，可以从支持的列列表中选择一列。

您可以使用**分组依据**按第三个特征对条形图进行分组。您可以使用**堆叠依据**，根据第四个特征的唯一值对每个条形图进行垂直阴影处理。

下图显示了使用**分组依据**和**堆叠依据**的条形图。在此示例中，条形图按 `MaritalStatus` 特征分组，并按 `JobLevel` 特征堆叠。对于 x 轴上的每个 `JobRole`，`MaritalStatus` 特征中的独特类别都有一个单独的条形图，每个条形图都按 `JobLevel` 特征垂直堆叠。

![\[Canvas 应用程序的数据可视化工具视图中条形图的屏幕截图。\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/studio/canvas/canvas-eda-bar-chart.png)


## 方框图
<a name="canvas-explore-data-boxplot"></a>

要使用您的数据集创建方框图，请在**可视化**面板中选择**方框图**。从**列**部分中选择要在 x 轴和 y 轴上绘制的特征。您可以将列拖放到坐标轴上，或者拖放坐标轴后，可以从支持的列列表中选择一列。

您可以使用**分组依据**按第三个特征对方框图进行分组。

下图显示了使用**分组依据**的方框图。在此示例中，x 轴和 y 轴分别显示 `JobLevel` 和 `JobSatisfaction`，彩色方框图按 `Department` 特征分组。

![\[Canvas 应用程序的数据可视化工具视图中方框图的屏幕截图。\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/studio/canvas/canvas-eda-box-plot.png)


# 使用分析功能来探索数据
<a name="canvas-explore-data-analytics"></a>

**注意**  
您只能对基于表格数据集构建的模型使用 SageMaker Canvas 分析。多元文本预测模型也排除在外。

借助 Amazon SageMaker Canvas 中的分析，您可以在构建模型之前探索数据集并深入了解所有变量。您可以使用相关矩阵确定数据集中特征之间的关系。您可以使用此技术将数据集汇总到一个矩阵中，该矩阵显示两个或多个值之间的相关性。这有助于您识别和可视化给定数据集中的模式，以进行高级数据分析。

该矩阵显示每个特征之间的正相关、负相关或中性相关。在构建模型时，您可能希望包含彼此高度相关的特征。几乎没有相关性的特征可能与您的模型无关，您可以在构建模型时删除这些特征。

要开始在 C SageMaker anvas 中使用相关矩阵，请参阅以下部分。

## 创建相关矩阵
<a name="canvas-explore-data-analytics-correlation-matrix"></a>

准备在 C SageMaker anvas 应用程序的 “构建” 选项卡中**构建**模型时，可以创建关联矩阵。

有关如何开始创建模型的说明，请参阅[构建模型](canvas-build-model-how-to.md)。

在 C SageMaker anvas 应用程序中开始准备模型后，请执行以下操作：

1. 在**构建**选项卡中，选择**数据可视化工具**。

1. 选择**分析**。

1. 选择**相关矩阵**。

您应该会看到一个类似于以下屏幕截图的可视化效果，该屏幕截图显示了最多 15 列的数据集，这些列被组织成一个相关矩阵。

![\[Canvas 应用程序中相关矩阵的屏幕截图。\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/studio/canvas/canvas-correlation-matrix-2.png)


创建相关矩阵后，您可以通过以下操作对其进行自定义：

### 1. 选择列
<a name="canvas-explore-data-analytics-correlation-matrix-columns"></a>

对于**列**，您可以选择要包含在矩阵中的列。您最多可以比较数据集中的 15 列数据。

**注意**  
您可以为相关矩阵使用数值、分类或二进制列类型。相关矩阵不支持日期时间或文本数据列类型。

要在相关矩阵中添加或删除列，请从**列**面板中选择和取消选择列。您还可以将面板上的列直接拖放到矩阵上。如果您的数据集包含很多列，则可以在**搜索列**栏中搜索所需的列。

要按数据类型筛选列，请选择下拉列表并选择**全部**、**数值**或**分类**。选择**全部**将显示数据集中的所有列，而**数值**和**分类**筛选条件仅显示数据集中的数值列或分类列。请注意，二进制列类型包含在数值或分类筛选条件中。

为了获得最佳的数据洞察力，请在相关性矩阵中包含目标列。当您将目标列包含在相关矩阵中时，它将显示为矩阵上带有目标符号的最后一个特征。

### 2. 选择相关类型
<a name="canvas-explore-data-analytics-correlation-matrix-cor-type"></a>

SageMaker Canvas 支持不同的*关联类型*或计算列间相关性的方法。

要更改相关类型，请使用上一节中提到的**列**筛选条件来筛选所需的列类型和列。您应该可以在侧面板中看到**相关类型**。对于数值比较，您可以选择 **Pearson** 或 **Spearman**。对于分类比较，相关类型设置为 **MI**。对于分类比较和混合比较，相关类型设置为 **Spearman & MI**。

对于仅比较数值列的矩阵，相关类型为 Pearson 或 Spearman。Pearson 度量用于评估两个连续变量之间的线性关系。Spearman 度量用于评估两个变量之间的单调关系。对于 Pearson 和 Spearman 来说，相关度的范围从 -1 到 1，两端表示完全相关（1:1 的直接关系），0 表示不相关。如果您的数据具有更多的线性关系（如[散点图可视化](https://docs.aws.amazon.com/sagemaker/latest/dg/canvas-explore-data.html#canvas-explore-data-scatterplot)所示），那么您可能需要选择 Pearson。如果您的数据不是线性的，或者混合包含线性关系和单调关系，那么您可能需要选择 Spearman。

对于仅比较分类列的矩阵，相关类型设置为互信息分类 (MI)。MI 值是衡量两个随机变量之间相互依赖性的指标。MI 测量值的范围为 0 到 1，其中 0 表示无相关性，1 表示完全相关。

对于数值列和分类列混合比较的矩阵，相关类型 **Spearman & MI** 是 Spearman 和 MI 相关类型的组合。对于两个数值列之间的相关性，矩阵显示 Spearman 值。对于数值列和分类列或两个分类列之间的相关性，矩阵显示 MI 值。

最后，请记住，相关性并不一定表示因果关系。强相关值只表明两个变量之间存在关系，但变量之间可能没有因果关系。请仔细检查感兴趣的列，以免在构建模型时出现偏差。

### 3. 筛选相关性
<a name="canvas-explore-data-analytics-correlation-matrix-filter"></a>

在侧面板中，您可以使用**筛选相关性**功能筛选要包含在矩阵中的相关值范围。例如，如果要筛选仅具有正相关性或中性相关性的特征，可以将**最小值**设为 0，将**最大值**设为 1（有效值为 -1 至 1）。

对于 Spearman 和 Pearson 比较，可以将**筛选相关性**范围设置在 -1 到 1 之间，0 表示没有相关性。-1 和 1 分别表示变量之间有很强的负相关性或正相关性。

对于 MI 比较，相关性范围仅从 0 到 1，0 表示没有相关性，1 表示变量之间有很强的相关性，无论是正相关性还是负相关性。

每个特征都与自身具有完美的相关性 (1)。因此，您可能会注意到相关矩阵的顶行始终为 1。如果要排除这些值，可以使用筛选器将**最大值**设置为小于 1。

请记住，如果您的矩阵比较的是数值列和分类列的组合，并使用 **Spearman & MI** 相关类型，那么*分类 x 数值*和*分类 x 分类*相关性（使用 MI 测量）的范围是 0 到 1，而*数值 x 数值*相关性（使用 Spearman 测量）的范围是 -1 到 1。仔细查看您感兴趣的相关性，确保您知道用于计算每个值的相关类型。

### 4. 选择可视化方法
<a name="canvas-explore-data-analytics-correlation-matrix-viz-method"></a>

在侧面板中，您可以使用**可视化依据**来更改矩阵的可视化方法。选择**数值**可视化方法可显示相关性（Pearson、Spearman 或 MI）值，或选择**大小**可视化方法则可通过不同大小和颜色的点显示相关性。如果选择**大小**，则可以将鼠标悬停在矩阵上的特定点上以查看实际的相关值。

### 5. 选择调色板
<a name="canvas-explore-data-analytics-correlation-matrix-color"></a>

在侧面板中，您可以使用**颜色选择**来更改矩阵中负相关与正相关比例所使用的调色板。选择一个备用调色板来更改矩阵中使用的颜色。

# 为模型构建准备数据
<a name="canvas-prepare-data"></a>

**注意**  
现在，你可以使用 Data Wrangler 在 SageMaker Canvas 中进行高级数据准备，它为你提供了自然语言界面和 300 多种内置转换。有关更多信息，请参阅 [数据准备](canvas-data-prep.md)。

在构建模型之前，您的机器学习数据集可能需要准备数据。由于各种问题（可能包括缺失值或异常值），您可能需要清理数据，并执行特征工程以提高模型的准确性。Amazon SageMaker Canvas 提供机器学习数据转换，您可以使用它来清理、转换和准备数据以进行模型构建。您无需任何代码即可在数据集中使用这些变换。 SageMaker Canvas 将你使用的变换添加到**模型配方**中，该配方记录了在构建模型之前对数据所做的准备工作。您使用的任何数据转换都只会修改用于构建模型的输入数据，而不会修改原始数据来源。

数据集的预览会显示数据集的前 100 行数据。如果数据集的行数超过 2 万行，Canvas 会随机抽取 2 万行样本，并预览该样本中的前 100 行数据。您只能从预览行中搜索和指定值，而筛选器功能只能筛选预览行，而不能筛选整个数据集。

Can SageMaker vas 中提供了以下变换，供您为构建数据做好准备。

**注意**  
只能对基于表格数据集构建的模型使用高级转换。多元文本预测模型也排除在外。

## 删除列
<a name="canvas-prepare-data-drop"></a>

您可以将某列拖放到 C SageMaker anvas 应用程序的 “构建” 选项卡中，将其从模型**构建**中排除。取消选择要删除的列，在构建模型时该列将不包括在内。

**注意**  
如果您删除列，然后使用模型进行[批量预测](canvas-make-predictions.md)， SageMaker Canvas 会将删除的列重新添加到可供您下载的输出数据集中。但是，对于时间序列模型， SageMaker Canvas 不会重新添加已删除的列。

## 筛选行
<a name="canvas-prepare-data-filter"></a>

筛选功能可根据您指定的条件筛选预览行（数据集的前 100 行）。筛选行会创建数据的临时预览，不会影响模型构建。您可以通过筛选来预览缺失值、包含异常值或符合您所选列中自定义条件的行。

### 按缺失值筛选行
<a name="canvas-prepare-data-filter-missing"></a>

在机器学习数据集中，缺失值是一种常见情况。如果某些列中的行值为 null 值或为空值，则可能需要筛选和预览这些行。

要从预览数据中筛选缺失值，请执行以下操作。

1. 在 SageMaker Canvas 应用程序的 “**构建**” 选项卡中，选择 “**按行筛选**” (![\[Filter icon in the SageMaker Canvas application.\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/studio/canvas/filter-icon.png))。

1. 选择要检查缺失值的**列**。

1. 在**操作**中，选择**是缺失值**。

SageMaker 画布筛选所选**列**中包含缺失值的行，并提供筛选行的预览。

![\[C SageMaker anvas 应用程序中按缺失值进行过滤操作的屏幕截图。\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/studio/canvas/canvas-filter-missing.png)


### 按异常值筛选行
<a name="canvas-prepare-data-filter-outliers"></a>

异常值或数据分布和范围中的稀有值可能会对模型精度产生负面影响，并导致更长的构建时间。 SageMaker Canvas 允许您检测和筛选数字列中包含异常值的行。您可以选择使用标准差或自定义范围来定义异常值。

要筛选数据中的异常值，请执行以下操作。

1. 在 SageMaker Canvas 应用程序的 “**构建**” 选项卡中，选择 “**按行筛选**” (![\[Filter icon in the SageMaker Canvas application.\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/studio/canvas/filter-icon.png))。

1. 选择要检查异常值的**列**。

1. 在**操作**中，选择**是异常值**。

1. 将**异常值范围**设置为**标准差**或**自定义范围**。

1. 如果选择**标准差**，请指定 1–3 之间的 **SD**（标准差）值。如果选择**自定义范围**，请选择**百分位数**或**数字**，然后指定**最小值**和**最大值**。

**标准差**选项使用平均值和标准差来检测和筛选数值列中的异常值。您可以指定一个值必须与平均值相差多少个标准差才能被视为异常值。例如，如果您指定 **SD** 为 `3`，那么一个值必须偏离平均值 3 个标准差以上才会被视为异常值。

**自定义范围**选项使用最小值和最大值来检测和筛选数值列中的异常值。如果您知道划分异常值的阈值，请使用此方法。您可以将范围的**类型**设置为**百分位数**或**数字**。如果选择**百分位数**，则**最小值**和**最大值**应是您想要允许的百分位数范围 (0-100) 的最小值和最大值。如果选择**数字**，则**最小值**和**最大值**应为要在数据中筛选的最小和最大数值。

![\[C SageMaker anvas 应用程序中按异常值过滤操作的屏幕截图。\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/studio/canvas/canvas-filter-outlier.png)


### 按自定义值筛选行
<a name="canvas-prepare-data-filter-custom"></a>

您可以筛选具有满足自定义条件的值的行。例如，您可能希望在删除价格值大于 100 的行之前预览这些行。使用此功能，您可以筛选超过您设置的阈值的行并预览已筛选的数据。

要使用自定义筛选功能，请执行以下操作。

1. 在 SageMaker Canvas 应用程序的 “**构建**” 选项卡中，选择 “**按行筛选**” (![\[Filter icon in the SageMaker Canvas application.\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/studio/canvas/filter-icon.png))。

1. 选择要检查的**列**。

1. 选择要使用的**操作**类型，然后为所选条件指定值。

对于**操作**，您可以选择以下选项之一。请注意，可用的操作取决于您选择的列的数据类型。例如，您无法为包含文本值的列创建 `is greater than` 操作。


| 操作 | 支持的数据类型 | 支持的特征类型 | 功能 | 
| --- | --- | --- | --- | 
|  等于  |  数值、文本  | 二进制、分类 |  筛选**列**中值等于指定值的行。  | 
|  不等于  |  数值、文本  | 二进制、分类 |  筛选**列**中值不等于指定值的行。  | 
|  小于  |  数值  | 不适用 |  筛选**列**中值小于指定值的行。  | 
|  小于或等于  |  数值  | 不适用 |  筛选**列**中值小于或等于指定值的行。  | 
|  大于  |  数值  | 不适用 |  筛选**列**中值大于指定值的行。  | 
|  大于或等于  |  数值  | 不适用 |  筛选**列**中值大于或等于指定值的行。  | 
|  介于  |  数值  | 不适用 |  筛选**列**中值介于或等于指定的两个值的行。  | 
|  包含  |  文本  | 分类 |  筛选**列**中值包含指定值的行。  | 
|  开始于  |  文本  | 分类 |  筛选**列**中值开始于指定值的行。  | 
|  结束于  |  分类  | 分类 |  筛选**列**中值结束于指定值的行。  | 

设置筛选操作后， SageMaker Canvas 会更新数据集的预览以显示筛选后的数据。

![\[C SageMaker anvas 应用程序中按自定义值筛选操作的屏幕截图。\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/studio/canvas/canvas-filter-custom.png)


## 函数和运算符
<a name="canvas-prepare-data-custom-formula"></a>

您可以使用数学函数和运算符来探索和分配数据。您可以使用 SageMaker Canvas 支持的函数，也可以使用现有数据创建自己的公式，然后使用公式的结果创建新列。例如，您可以将两列的相应值相加，并将结果保存到新列中。

您可以嵌套语句来创建更复杂的函数。以下是您可能使用的嵌套函数的一些示例。
+ 要计算 BMI，可以使用函数 `weight / (height ^ 2)`。
+ 要对年龄进行分类，可以使用函数 `Case(age < 18, 'child', age < 65, 'adult', 'senior')`。

在构建模型之前，可以在数据准备阶段指定函数。要使用函数，请执行以下操作。
+ 在 SageMaker Canvas 应用程序的 “**构建**” 选项卡中，选择 “**查看全部**”，然后选择 “**自定义公式**” 以打开 “**自定义公式**” 面板。
+ 在**自定义公式**面板中，您可以选择要添加到**模型配方**中的**公式**。每个公式都应用于您指定的列中的所有值。对于接受两列或更多列作为参数的公式，请使用数据类型匹配的列；否则会出错或在新列中出现 `null` 值。
+ 指定**公式**后，在 “**新列名” 字段中添加列名**。 SageMaker Canvas 将此名称用于创建的新列。
+ （可选）选择**预览**以预览您的转换结果。
+ 要将函数添加到**模型配方**中，请选择**添加**。

SageMaker Canvas 使用您在新列名中指定的名称将函数的结果保存到**新列**中。您可以从**模型配方**面板中查看或删除函数。

SageMaker Canvas 支持以下函数运算符。您可以使用文本格式或内联格式来指定函数。


| 运算符 | 说明 | 支持的数据类型 | 文本格式 | 内联格式 | 
| --- | --- | --- | --- | --- | 
|  添加  |  返回各值之和  |  数值  | Add(sales1, sales2) | sales1 \$1 sales2 | 
|  Subtract  |  返回值之间的差值  |  数值  | Subtract(sales1, sales2) | sales1 ‐ sales2 | 
|  Multiply  |  返回值的乘积  |  数值  | Multiply(sales1, sales2) | sales1 \$1 sales2 | 
|  Divide  |  返回值的商  |  数值  | Divide(sales1, sales2) | sales1 / sales2 | 
|  Mod  |  返回取模运算符的结果（两个值相除后的余数）  |  数值  | Mod(sales1, sales2) | sales1 % sales2 | 
|  Abs  | 返回值的绝对值 |  数值  | Abs(sales1) | 不适用 | 
|  Negate  | 返回值的负值 |  数值  | Negate(c1) | ‐c1 | 
|  Exp  |  返回 e（欧拉数）的幂值  |  数值  | Exp(sales1) | 不适用 | 
|  Log  |  返回值的对数（以 10 为底）  |  数值  | Log(sales1) | 不适用 | 
|  Ln  |  返回值的自然对数（以 e 为底）  |  数值  | Ln(sales1) | 不适用 | 
|  Pow  |  返回值的幂级数  |  数值  | Pow(sales1, 2) | sales1 ^ 2 | 
|  If  |  根据指定的条件返回 true 或 false 标签  |  布尔值、数字、文本  | If(sales1>7000, 'truelabel, 'falselabel') | 不适用 | 
|  Or  |  返回一个布尔值，表示指定值或条件之一是否为真  |  布尔值  | Or(fullprice, discount) | fullprice \$1\$1 discount | 
|  And  |  返回一个布尔值，表示两个指定的值或条件是否为真  |  布尔值  | And(sales1,sales2) | sales1 && sales2 | 
|  Not  |  返回与指定值或条件相反的布尔值  |  布尔值  | Not(sales1) | \$1sales1 | 
|  Case  |  根据条件语句返回布尔值（如果 cond1 为真，则返回 c1，如果 cond2 为真，则返回 c2，否则返回 c3）  |  布尔值、数字、文本  | Case(cond1, c1, cond2, c2, c3) | 不适用 | 
|  Equal  |  返回一个布尔值，表示两个值是否相等  |  布尔值、数字、文本  | 不适用 | c1 = c2c1 == c2 | 
|  Not equal  |  返回一个布尔值，表示两个值是否不相等  |  布尔值、数字、文本  | 不适用 | c1 \$1= c2 | 
|  Less than  |  返回一个布尔值，表示 c1 是否小于 c2  |  布尔值、数字、文本  | 不适用 | c1 < c2 | 
|  Greater than  |  返回一个布尔值，表示 c1 是否大于 c2  |  布尔值、数字、文本  | 不适用 | c1 > c2 | 
|  Less than or equal  |  返回一个布尔值，表示 c1 是否小于或等于 c2  |  布尔值、数字、文本  | 不适用 | c1 <= c2 | 
|  Greater than or equal  |  返回一个布尔值，表示 c1 是否大于或等于 c2  |  布尔值、数字、文本  | 不适用 | c1 >= c2 | 

SageMaker Canvas 还支持聚合运算符，它可以执行诸如计算所有值的总和或查找列中的最小值之类的操作。可以在函数中将聚合运算符与标准运算符结合使用。例如，要计算值与均值的差，可以使用函数`Abs(height – avg(height))`。 SageMaker Canvas 支持以下聚合运算符。


| 聚合运算符 | 说明 | 格式 | 示例 | 
| --- | --- | --- | --- | 
|  sum  |  返回列中所有值的总和  | sum | sum(c1) | 
|  minimum  |  返回列的最小值  | min | min(c2) | 
|  maximum  |  返回列的最大值  | max | max(c3) | 
|  average  |  返回列的平均值  | avg | avg(c4) | 
|  std  | 返回列的样本标准差 | std | std(c1) | 
|  stddev  | 返回列中值的标准差 | stddev | stddev(c1) | 
|  variance  | 返回列中值的无偏方差 | variance | variance(c1) | 
|  approx\$1count\$1distinct  | 返回列中不同项的大致数量 | approx\$1count\$1distinct | approx\$1count\$1distinct(c1) | 
|  count  | 返回列中的项数 | count | count(c1) | 
|  first  |  返回列的第一个值  | 第一个 | first(c1) | 
|  last  |  返回列的最后一个值  | last | last(c1) | 
|  stddev\$1pop  | 返回列的总体标准差 | stddev\$1pop | stddev\$1pop(c1) | 
|  variance\$1pop  |  返回列中值的总体方差  | variance\$1pop | variance\$1pop(c1) | 

## 管理行
<a name="canvas-prepare-data-manage"></a>

使用“管理行”转换，可以对数据集中的数据行进行排序、随机排列以及删除数据行。

### 排序行
<a name="canvas-prepare-data-manage-sort"></a>

要按给定列对数据集中的行进行排序，请执行以下操作。

1. 在 SageMaker Canvas 应用程序的 “**构建**” 选项卡中，选择 “**管理行**”，然后选择 “**对行进行排序**”。

1. 在**排序列**中，选择要作为排序依据的列。

1. 在**排序顺序**中，选择**升序**或**降序**。

1. 选择**添加**将该转换添加到**模型配方**中。

### 随机排列行
<a name="canvas-prepare-data-manage-shuffle"></a>

要随机排列数据集中的行，请执行以下操作。

1. 在 SageMaker Canvas 应用程序的 “**构建**” 选项卡中，选择 “**管理行**”，然后选择 “**随机排列**”。

1. 选择**添加**将该转换添加到**模型配方**中。

### 删除重复的行
<a name="canvas-prepare-data-manage-drop-duplicate"></a>

要删除数据集中的重复行，请执行以下操作。

1. 在 SageMaker Canvas 应用程序的 “**构建**” 选项卡中，选择 “**管理行**”，然后选择 “**删除重复行**”。

1. 选择**添加**将该转换添加到**模型配方**中。

### 按缺失值删除行
<a name="canvas-prepare-data-remove-missing"></a>

缺失值在机器学习数据集中很常见，可能会影响模型的准确性。如果要删除某些列中为 null 值或空值的行，请使用此转换。

要删除指定列中包含缺失值的行，请执行以下操作。

1. 在 SageMaker Canvas 应用程序的 “**构建**” 选项卡中，选择 “**管理行**”。

1. 选择**按缺失值删除行**。

1. 选择**添加**将该转换添加到**模型配方**中。

SageMaker Canvas 会删除所选**列**中包含缺失值的行。从数据集中移除行后， SageMaker Canvas 会在**模型配方**部分中添加变换。如果从**模型配方**部分中删除转换，则这些行将返回到您的数据集。

![\[C SageMaker anvas 应用程序中按缺失值删除行操作的屏幕截图。\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/studio/canvas/canvas-remove-missing.png)


### 按异常值删除行
<a name="canvas-prepare-data-remove-outliers"></a>

异常值或数据分布和范围中的罕见值会对模型的准确性产生负面影响，并导致构建时间延长。使用 SageMaker Canvas，您可以检测和删除数字列中包含异常值的行。您可以选择使用标准差或自定义范围来定义异常值。

要从数据中删除异常值，请执行以下操作。

1. 在 SageMaker Canvas 应用程序的 “**构建**” 选项卡中，选择 “**管理行**”。

1. 选择**按异常值删除行**。

1. 选择要检查异常值的**列**。

1. 将**运算符**设置为**标准差**、**自定义数值范围**或**自定义分位数范围**。

1. 如果选择**标准差**，请指定 1–3 之间的**标准差**值。如果选择**自定义数值范围**或**自定义分位数范围**，请指定**最小值**和**最大值**（数值范围为数字，分位数范围为 0-100% 之间的百分位数）。

1. 选择**添加**将该转换添加到**模型配方**中。

**标准差**选项使用平均值和标准差来检测和删除数值列中的异常值。您可以指定一个值必须与平均值相差多少个标准差才能被视为异常值。例如，如果您指定**标准差**为 `3`，那么一个值必须偏离平均值 3 个标准差以上才会被视为异常值。

**自定义数值范围**和**自定义分位数范围**选项使用最小值和最大值检测和删除数值列中的异常值。如果您知道划分异常值的阈值，请使用此方法。如果选择数值范围，则**最小值**和**最大值**应是数据中允许的最小和最大数值。如果选择分位数范围，则**最小值**和**最大值**应该是您希望允许的百分位数范围 (0–100) 的最小值和最大值。

从数据集中移除行后， SageMaker Canvas 会在**模型配方**部分中添加变换。如果从**模型配方**部分中删除转换，则这些行将返回到您的数据集。

![\[C SageMaker anvas 应用程序中按异常值删除行操作的屏幕截图。\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/studio/canvas/canvas-remove-outlier.png)


### 按自定义值删除行
<a name="canvas-prepare-data-remove-custom"></a>

您可以删除值符合自定义条件的行。例如，在构建模型时，您可能希望排除所有价格值大于 100 的行。通过这种转换，您可以创建一条规则，删除所有超过您设置的阈值的行。

要使用自定义删除转换，请执行以下操作。

1. 在 SageMaker Canvas 应用程序的 “**构建**” 选项卡中，选择 “**管理行**”。

1. 选择**按公式删除行**。

1. 选择要检查的**列**。

1. 选择要使用的**操作**类型，然后为所选条件指定值。

1. 选择**添加**将该转换添加到**模型配方**中。

对于**操作**，您可以选择以下选项之一。请注意，可用的操作取决于您选择的列的数据类型。例如，您无法为包含文本值的列创建 `is greater than` 操作。


| 操作 | 支持的数据类型 | 支持的特征类型 | 功能 | 
| --- | --- | --- | --- | 
|  等于  |  数值、文本  |  二进制、分类  |  删除**列**中值等于指定值的行。  | 
|  不等于  |  数值、文本  |  二进制、分类  |  删除**列**中值不等于指定值的行。  | 
|  小于  |  数值  | 不适用 |  删除**列**中值小于指定值的行。  | 
|  小于或等于  |  数值  | 不适用 |  删除**列**中值小于或等于指定值的行。  | 
|  大于  |  数值  | 不适用 |  删除**列**中值大于指定值的行。  | 
|  大于或等于  | 数值 | 不适用 |  删除**列**中值大于或等于指定值的行。  | 
|  介于  | 数值 | 不适用 |  删除**列**中值介于或等于指定的两个值的行。  | 
|  包含  |  文本  | 分类 |  删除**列**中值包含指定值的行。  | 
|  开始于  |  文本  | 分类 |  删除**列**中值开始于指定值的行。  | 
|  结尾为  |  文本  | 分类 |  删除**列**中值结束于指定值的行。  | 

从数据集中移除行后， SageMaker Canvas 会在**模型配方**部分中添加变换。如果从**模型配方**部分中删除转换，则这些行将返回到您的数据集。

![\[C SageMaker anvas 应用程序中按自定义值删除行操作的屏幕截图。\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/studio/canvas/canvas-remove-custom.png)


## 重命名列
<a name="canvas-prepare-data-rename"></a>

通过重命名列转换，您可以重命名数据中的列。当您重命名列时， SageMaker Canvas 会更改模型输入中的列名。

您可以通过双击 C SageMaker anvas 应用程序的 “**构建**” 选项卡中的列名称并输入新名称来重命名数据集中的列。按 **Enter** 键可提交更改，单击输入框外的任意位置可取消更改。您还可以单击列表视图中行末尾或网格视图中标题单元末尾的**更多选项**图标 (![\[Vertical ellipsis icon representing a menu or more options.\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/studio/canvas/more-options-icon.png))，然后选择**重命名**来重命名列。

列名不能超过 32 个字符，也不能有双下划线 (\$1\$1)，而且不能将一列重命名为与另一列相同的名称。您也不能重命名已删除的列。

以下屏幕截图显示了如何通过双击列名来重命名列。

![\[在 C SageMaker anvas 应用程序中使用双击方法重命名列的屏幕截图。\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/studio/canvas/canvas-rename-column.png)


当您重命名列时， SageMaker Canvas 会在**模型配方**部分中添加变换。如果从**模型配方**部分中删除转换，列就会恢复到原来的名称。

## 管理列
<a name="canvas-prepare-data-manage-cols"></a>

通过以下变换，您可以更改列的数据类型并替换特定列的缺失值或异常值。 SageMaker Canvas 在构建模型时使用更新的数据类型或值，但不会更改您的原始数据集。请注意，如果您使用[删除列](#canvas-prepare-data-drop)转换从数据集中删除了一列，则无法替换该列中的值。

### 替换缺失值
<a name="canvas-prepare-data-replace-missing"></a>

缺失值在机器学习数据集中很常见，可能会影响模型的准确性。您可以选择删除具有缺失值的行，但如果您选择替换缺失值，您的模型会更准确。使用此转换，可以用列中数据的平均值或中位数替换数值列中的缺失值，也可以指定一个自定义值来替换缺失值。对于非数值列，可以用列的模式（最常用值）或自定义值替换缺失值。

如果要替换某些列中的 null 值或空值，请使用此转换。要替换指定列中的缺失值，请执行以下操作。

1. 在 SageMaker Canvas 应用程序的 “**构建**” 选项卡中，选择 “**管理列**”。

1. 选择**替换缺失值**。

1. 选择要替换其中缺失值的**列**。

1. 将**模式**设置为**手动**，将缺失值替换为您指定的值。在 “**自动”（默认）**设置中， SageMaker Canvas 会将缺失值替换为最适合您的数据的估算值。除非指定**手动**模式，否则每次构建模型时都会自动执行这种估算方法。

1. 设置**替换为**值：
   + 如果您的列是数值列，请选择**平均值**、**中位数**或**自定义**。**平均值**用该列的平均值替换缺失值，而**中位数**则用该列的中位数替换缺失值。如果选择**自定义**，则必须指定要用于替换缺失值的自定义值。
   + 如果您的列不是数值列，请选择**模式**或**自定义**。**模式**将缺失值替换为列的模式或最常用值。对于**自定义**，指定要用来替换缺失值的自定义值。

1. 选择**添加**将该转换添加到**模型配方**中。

替换数据集中的缺失值后， SageMaker Canvas 会在**模型配方**部分中添加变换。如果从**模型配方**部分中删除转换，则缺失值将返回到数据集中。

![\[C SageMaker anvas 应用程序中替换缺失值操作的屏幕截图。\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/studio/canvas/canvas-replace-missing.png)


### 替换异常值
<a name="canvas-prepare-data-replace-outliers"></a>

异常值或数据分布和范围中的稀有值可能会对模型精度产生负面影响，并导致更长的构建时间。 SageMaker Canvas 使您能够检测数字列中的异常值，并将异常值替换为位于数据中可接受范围内的值。您可以选择使用标准差或自定义范围来定义异常值，也可以将异常值替换为可接受范围内的最小值和最大值。

要替换数据中的异常值，请执行以下操作。

1. 在 SageMaker Canvas 应用程序的 “**构建**” 选项卡中，选择 “**管理列**”。

1. 选择**替换异常值**。

1. 选择要替换其中异常值的**列**。

1. 对于**定义异常值**，选择**标准差**、**自定义数值范围**或**自定义分位数范围**。

1. 如果选择**标准差**，请指定 1–3 之间的**标准差**值。如果选择**自定义数值范围**或**自定义分位数范围**，请指定**最小值**和**最大值**（数值范围为数字，分位数范围为 0-100% 之间的百分位数）。

1. 对于**替换为**，选择**最小/最大范围**。

1. 选择**添加**将该转换添加到**模型配方**中。

**标准差**选项使用平均值和标准差来检测数值列中的异常值。您可以指定一个值必须与平均值相差多少个标准差才能被视为异常值。例如，如果您为**标准差**指定 3，则一个值必须与均值相差超过 3 个标准差才能被视为异常值。 SageMaker Canvas 用可接受范围内的最小值或最大值替换异常值。例如，如果您将标准差配置为仅包含 200—300 之间的值，则 SageMaker Canvas 会将值 198 更改为 200（最小值）。

**自定义数值范围**和**自定义分位数范围**选项使用最小值和最大值来检测数值列中的异常值。如果您知道划分异常值的阈值，请使用此方法。**如果选择数值范围，则最小值和**最大**值应是您想要允许的最小和最大数值。** SageMaker Canvas 会将任何超出最小值和最大值的值替换为最小值和最大值。例如，如果您的范围仅允许 1—100 之间的值，则 SageMaker Canvas 会将值 102 更改为 100（最大值）。如果选择分位数范围，则**最小值**和**最大值**应该是您希望允许的百分位数范围 (0–100) 的最小值和最大值。

替换数据集中的值后， SageMaker Canvas 会在**模型配方**部分中添加变换。如果从**模型配方**部分中删除该转换，则原始值将返回到数据集中。

![\[C SageMaker anvas 应用程序中替换异常值操作的屏幕截图。\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/studio/canvas/canvas-replace-outlier.png)


### 更改数据类型
<a name="canvas-prepare-data-change-type"></a>

SageMaker Canvas 使您能够在数字、文本和日期时间之间更改列*的数据类型*，同时还可以显示该数据类型的关联*要素类型*。*数据类型*是指数据的格式及其存储方式，而*特征类型*是指机器学习算法中使用的数据的特征，例如二进制或分类。这样，您就可以根据特征灵活地手动更改列中的数据类型。选择正确的数据类型的能力可确保在构建模型之前的数据完整性和准确性。这些数据类型用于构建模型。

**注意**  
当前，不支持更改特征类型（例如，从二进制更改为分类）。

下表列出了 Canvas 支持的所有数据类型。


| 数据类型 | 说明 | 示例 | 
| --- | --- | --- | 
| 数值 | 数值数据表示数值 | 1, 2, 31.1, 1.2。1.3 | 
| 文本 | 文本数据表示字符序列，例如名称或描述 | A, B, C, Dapple, banana, orange1A\$1, 2A\$1, 3A\$1 | 
| 日期时间 | 日期时间数据以时间戳格式表示日期和时间 | 2019-07-01 01:00:00, 2019-07-01 02:00:00, 2019-07-01 03:00:00 | 

下表列出了 Canvas 支持的所有特征类型。


| 特征类型 | 说明 | 示例 | 
| --- | --- | --- | 
| 二元 | 二元特征表示两个可能的值 | 0, 1, 0, 1, 0（2 个不同的值）true, false, true（2 个不同的值） | 
| 分类 | 分类特征表示不同的类别或群组 | apple, banana, orange, apple（3 个不同的值）A, B, C, D, E, A, D, C（5 个不同的值） | 

要修改数据集中某列的数据类型，请执行以下操作。

1. 在 SageMaker Canvas 应用程序的 “**构建**” 选项卡中，转到 “**列” 视图**或 “**网格” 视**图，然后为特定列选择**数据类型**下拉列表。

1. 在**数据类型**下拉菜单中，选择要转换为的数据类型。以下屏幕截图显示了该下拉菜单。  
![\[列的数据类型转换下拉菜单，显示在构建选项卡中。\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/studio/canvas/canvas-prepare-data-change.png)

1. 对于**列**，选择或验证要更改其数据类型的列。

1. 对于**新数据类型**，选择或验证要转换为的新数据类型。

1. 如果**新数据类型**为`Datetime`或`Numeric`，请在**处理无效值**下选择以下选项之一：

   1. **替换为空值** – 用空值替换无效值

   1. **删除行** - 从数据集中删除具有无效值的行

   1. **替换为自定义值** - 用您指定的**自定义值**替换无效值。

1. 选择**添加**将该转换添加到**模型配方**中。

您的列的数据类型现在应该已更新。

## 准备时间序列数据
<a name="canvas-prepare-data-timeseries"></a>

使用以下功能准备时间序列数据，以构建时间序列预测模型。

### 重新采样时间序列数据
<a name="canvas-prepare-data-resample"></a>

通过对时间序列数据进行重采样，您可以为时间序列数据集中的观测值建立固定的时间间隔。这在处理包含不规则间隔观测值的时间序列数据时特别有用。例如，您可以使用重采样将每隔一小时、两小时和三小时记录一次观测值的数据集转换为每隔一小时记录一次观测值的常规数据集。预测算法需要定期进行观测。

要对时间序列数据进行重新采样，请执行以下操作。

1. 在 SageMaker Canvas 应用程序的 “**构建**” 选项卡中，选择 “**时间序列**”。

1. 选择**重新采样**。

1. 对于**时间戳列**，选择要对其应用转换的列。您只能选择**日期时间**类型的列。

1. 在**频率设置**部分，选择**频率**和**速率**。**频率**是指频率单位，**速率**是指应用于列的频率单位的间隔。例如，如果为**频率值**选择`Calendar Day`并为**速率**选择 `1`，则会将间隔设置为每 1 个日历日增加一次，例如 `2023-03-26 00:00:00`、`2023-03-27 00:00:00`、`2023-03-28 00:00:00`。有关**频率值**的完整列表，请参阅此过程后的表格。

1. 选择**添加**将该转换添加到**模型配方**中。

下表列出了在对时间序列数据进行重采样时可以选择的所有**频率**类型。


| 频率 | 说明 | 示例值（假设速率为 1） | 
| --- | --- | --- | 
|  工作日  |  将日期时间列中的观测值重采样为一周中的 5 个工作日（星期一、星期二、星期三、星期四、星期五）  |  2023-03-24 00:00:00 2023-03-27 00:00:00 2023-03-28 00:00:00 2023-03-29 00:00:00 2023-03-30 00:00:00 2023-03-31 00:00:00 2023-04-03 00:00:00  | 
|  日历日  |  将日期时间列中的观测值重采样为一周中的所有 7 天（星期一、星期二、星期三、星期四、星期五、星期六、星期日）  |  2023-03-26 00:00:00 2023-03-27 00:00:00 2023-03-28 00:00:00 2023-03-29 00:00:00 2023-03-30 00:00:00 2023-03-31 00:00:00 2023-04-01 00:00:00  | 
|  周  |  将日期时间列中的观测值重采样为每周的第一天  |  2023-03-13 00:00:00 2023-03-20 00:00:00 2023-03-27 00:00:00 2023-04-03 00:00:00  | 
|  月  |  将日期时间列中的观测值重采样为每个月的第一天  |  2023-03-01 00:00:00 2023-04-01 00:00:00 2023-05-01 00:00:00 2023-06-01 00:00:00  | 
|  年度季度  |  将日期时间列中的观测值重采样为每个季度的最后一天  |  2023-03-31 00:00:00 2023-06-30 00:00:00 2023-09-30 00:00:00 2023-12-31 00:00:00  | 
|  Year  |  将日期时间列中的观测值重采样为每年的最后一天  |  2022-12-31 0:00:00 2023-12-31 00:00:00 2024-12-31 00:00:00  | 
|  小时  |  将日期时间列中的观测值重采样为每天的每个小时  |  2023-03-24 00:00:00 2023-03-24 01:00:00 2023-03-24 02:00:00 2023-03-24 03:00:00  | 
|  分钟  |  将日期时间列中的观测值重采样为每小时的每一分钟  |  2023-03-24 00:00:00 2023-03-24 00:01:00 2023-03-24 00:02:00 2023-03-24 00:03:00  | 
|  秒  |  将日期时间列中的观测值重采样为每分钟的每一秒  |  2023-03-24 00:00:00 2023-03-24 00:00:01 2023-03-24 00:00:02 2023-03-24 00:00:03  | 

应用重采样转换时，可以使用**高级**选项来指定如何修改数据集中其余列（时间戳列除外）的结果值。这可以通过指定重采样方法来实现，对于数值列和非数值列，重采样方法可以是下采样或上采样。

*下采样*会延长数据集中观测值之间的间隔。例如，如果对每小时或每两小时记录的观测值进行下采样，那么数据集中的每个观测值将每两小时记录一次。使用组合方法将每小时观测值中其他列的值聚合为单个值。下表显示了使用均值作为组合方法对时间序列数据进行下采样的示例。数据采样从每两小时一次降到每小时一次。

下表显示了下采样之前一天内每小时的温度读数。


| Timestamp | 温度（摄氏度） | 
| --- | --- | 
| 12:00 pm | 30 | 
| 1:00 am | 32 | 
| 2:00 am | 35 | 
| 3:00 am | 32 | 
| 4:00 am | 30 | 

下表显示了下采样至每两小时一次后的温度读数。


| Timestamp | 温度（摄氏度） | 
| --- | --- | 
| 12:00 pm | 30 | 
| 2:00 am | 33.5 | 
| 2:00 am | 35 | 
| 4:00 am | 32.5 | 

要对时间序列数据进行下采样，请执行以下操作：

1. 展开**重采样**转换下的**高级**部分。

1. 选择**非数值组合**以指定非数值列的组合方法。有关组合方法的完整列表，请参阅下表。

1. 选择**数值组合**以指定数值列的组合方法。有关组合方法的完整列表，请参阅下表。

如果未指定组合方法，则**非数值组合**的默认值为`Most Common`，**数值组合**的默认值为`Mean`。下表列出了数值和非数值组合的方法。


| 下采样方法 | 组合方法 | 说明 | 
| --- | --- | --- | 
| 非数值组合 | 最常用 | 按最常用值聚合非数值列中的值 | 
| 非数值组合 | 最后一个 | 按非数值列中的最后一个值聚合该列中的值 | 
| 非数值组合 | 第一个 | 按非数值列中的第一个值聚合该列中的值 | 
| 数值组合 | 平均值 | 通过取数值列中所有值的平均值来聚合该列中的值 | 
| 数值组合 | 中位数 | 通过取数值列中所有值的中位数来聚合该列中的值 | 
| 数值组合 | 最小值 | 通过取数值列中所有值的最小值来聚合该列中的值 | 
| 数值组合 | 最大值 | 通过取数值列中所有值的最大值来聚合该列中的值 | 
| 数值组合 | 总和 | 通过将数值列中的所有值相加来聚合该列中的值 | 
| 数值组合 | 分位数 | 通过取数值列中所有值的分位数来聚合该列中的值 | 

*上采样*则会缩短数据集中观测值之间的间隔。例如，如果您将每两小时采集的观测值上采样为每小时观测值，则每小时观测值中其他列的值将从每两小时采集的观测值中插值而来。

要对时间序列数据进行上采样，请执行以下操作：

1. 展开**重采样**转换下的**高级**部分。

1. 选择**非数值估算**以指定非数值列的估算方法。有关方法的完整列表，请参阅此过程之后的表格。

1. 选择**数值估算**以指定数值列的估算方法。有关方法的完整列表，请参阅下表。

1. （可选）选择 **ID 列**以指定包含时间序列观测值的列。 IDs如果您的数据集有两个时间序列，请指定此选项。如果您有一列仅代表一个时间序列，请不要为此字段指定值。例如，您可以有一个包含列 `id` 和 `purchase` 的数据集。`id` 列具有以下值：`[1, 2, 2, 1]`。`purchase` 列具有以下值：`[$2, $3, $4, $1]`。因此，数据集有两个时间序列，一个时间序列是 `1: [$2, $1]`，另一个时间序列是 `2: [$3, $4]`。

如果未指定估算方法，则**非数值估算**的默认值为 `Forward Fill`，**数值估算**的默认值为 `Linear`。下表列出了各种估算方法。


| 上采样方法 | 估算方法 | 说明 | 
| --- | --- | --- | 
| 非数值估算 | 前向填充 | 通过在非数值列中的所有值之后取连续值来插入该列中的值 | 
| 非数值估算 | 后向填充 | 通过在非数值列中的所有值之前取连续值来插入该列中的值 | 
| 非数值估算 | 保持缺失 | 通过显示空值来插入非数值列中的值 | 
| 数值估算 | Linear、Time、Index、Zero、S-Linear、Nearest、Quadratic、Cubic、Barycentric、Polynomial、Krogh、Piecewise Polynomial、Spline、P-chip、Akima、Cubic Spline、From Derivatives | 使用指定的插值器来插入数值列中的值。[有关插值方法的信息，请参阅 pandas。 DataFrame.interpolate](https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.interpolate.html) 在 pandas 文档中。 | 

以下屏幕截图显示了**高级**设置，其中填写了下采样和上采样字段。

![\[Canvas 应用程序，其中时间序列重采样侧面板显示了高级选项。\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/studio/canvas/canvas-prepare-data-resampling.png)


### 使用日期时间提取
<a name="canvas-prepare-data-datetime"></a>

使用日期时间提取转换，您可以将日期时间列中的值提取到单独的列。例如，如果您有一列包含购买日期，则可以将月份值提取到单独的列中，并在构建模型时使用新列。您还可以通过一次转换将多个值提取到不同的列中。

日期时间列必须使用支持的时间戳格式。有关 C SageMaker anvas 支持的格式列表，请参阅[Amazon C SageMaker anvas 中的时间序列预测](canvas-time-series.md)。如果您的数据集未使用任何支持的格式，请更新您的数据集以使用支持的时间戳格式，并在构建模型之前将其重新导入到 Amazon SageMaker Canvas。

要执行日期时间提取，请执行以下操作。

1. 在 SageMaker Canvas 应用程序的 “**构建**” 选项卡中，在变换栏上，选择 “**查看全部**”。

1. 选择**提取特征**。

1. 选择要从中提取值的**时间戳列**。

1. 在**值**中，选择一个或多个要从列中提取的值。您可以从时间戳列中提取的值包括**年**、**月**、**日**、**小时**、**一年中的一周**、**一年中的一天**和**季度**。

1. （可选）选择**预览**以预览转换结果。

1. 选择**添加**将该转换添加到**模型配方**中。

SageMaker Canvas 会在数据集中为您提取的每个值创建一个新列。除**年**份值外， SageMaker Canvas 对提取的值使用基于 0 的编码。例如，如果提取**月**值，则一月份提取为 0，二月份提取为 1。

![\[C SageMaker anvas 应用程序中日期时间提取框的屏幕截图。\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/studio/canvas/canvas-datetime-extract.png)


您可以看到在**模型配方**部分中列出了该转换。如果从**模型配方**部分中删除该转换，则会从数据集中删除新列。