

 Amazon Forecast 不再向新买家开放。Amazon Forecast 的现有客户可以继续照常使用该服务。[了解更多](https://aws.amazon.com/blogs/machine-learning/transition-your-amazon-forecast-usage-to-amazon-sagemaker-canvas/)

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

# 生成预测
<a name="howitworks-forecast"></a>

创建 Amazon Forecast 预测器后，就可以创建预测了。默认情况下，预测包括数据集组中用于训练预测器的每个项目（`item_id`）的预测。但是，您可以指定用于生成预测的项目子集。

 创建预测后，您可以将其导出到 Amazon Simple Storage Service（Amazon S3）存储桶中。

**Topics**
+ [创建预测](#exporting-forecast)
+ [指定时间序列](#forecast-time-series)
+ [导出预测](#export-forecast)
+ [查询预测](#query-forecast)
+ [冷启动预测](#coldstart-forecast)

## 创建预测
<a name="exporting-forecast"></a>

您可以使用 Forecast 控制台创建预测 AWS CLI、或 AWS SDKs。在生成预测之前，预测器的状态必须为**活动**。

------
#### [ Console ]

**创建预测**

1. 登录 AWS 管理控制台 并打开 Amazon Forecast 控制台，网址为[https://console.aws.amazon.com/forecast/](https://console.aws.amazon.com/forecast/)。

1. 在**数据集组**中，选择您的数据集组。

1. 在数据集组的**控制面板** 上，在 **生成预测**下，选择 **创建预测**。此时将显示**创建预测**页面。

1. 在**创建预测**页面上，要了解**预测详情**，请提供预测的名称，然后选择要用于创建预测的预测器。

1.  对于**预测分位数**，可以选择指定生成概率预测的分位数。默认分位数是您在创建预测器时指定的分位数。

1. （可选）选择**选定项目**的单选按钮，以指定用于生成预测的时间序列的子集。

1. （可选）为预测添加任何标签。有关更多信息，请参阅[为 Amazon Forecast 资源贴标签](tagging-forecast-resources.md)。

1. 选择**启动**。此时将出现**预测**页面。

   **状态**列列出了您的预测状态。等待 Amazon Forecast 完成创建预测。此过程可能需要几分钟或更长时间。预测创建完成后，状态会变为**活动**。

   现在，您的预测已创建，您可以导出预测。请参阅 [导出预测](#export-forecast)。

------
#### [ CLI ]

要使用创建预测 AWS CLI，请使用`create-forecast`命令。提供预测名称和预测器的 Amazon 资源名称（ARN）。针对 `forecast-types`，可以选择指定生成概率预测的分位数。默认值是您在创建预测器时指定的分位数。（可选）为预测添加任何标签。有关更多信息，请参阅[为 Amazon Forecast 资源贴标签](tagging-forecast-resources.md)。

有关必需和可选参数的更多信息，请参阅 [CreateForecast](API_CreateForecast.md)。

```
aws forecast create-forecast \
--forecast-name forecast_name \
--forecast-types 0.1 0.5 0.9 \
--predictor-arn arn:aws:forecast:region:account_number:predictor/predictorName \
--tags Key=key1,Value=value1 Key=key2,Value=value2
```

------
#### [ Python ]

要使用适用于 Python（Boto3）的 SDK 创建预测，请使用 `create_forecast` 方法。提供预测名称和预测器的 Amazon 资源名称（ARN）。针对 `ForecastTypes`，可以选择指定生成概率预测的分位数。默认值是您在创建预测器时指定的分位数。（可选）为预测添加任何标签。有关更多信息，请参阅[为 Amazon Forecast 资源贴标签](tagging-forecast-resources.md)。

有关必需和可选参数的更多信息，请参阅 [CreateForecast](API_CreateForecast.md)。

```
import boto3
                
forecast = boto3.client('forecast')

create_forecast_response = forecast.create_forecast(
   ForecastName = "Forecast_Name",
   ForecastTypes = ["0.1", "0.5", "0.9"],        # optional, the default types/quantiles are what you specified for the predictor
   PredictorArn = "arn:aws:forecast:region:accountNumber:predictor/predictorName",
   Tags = [ 
      { 
         "Key": "key1",
         "Value": "value1"
      },
      { 
         "Key": "key2",
         "Value": "value2"
      }
   ]
)
forecast_arn = create_forecast_response['ForecastArn']
print(forecast_arn)
```

------

## 指定时间序列
<a name="forecast-time-series"></a>

**注意**  
时间序列是数据集中项目 (item\$1id) 和所有维度的组合。

要指定时间序列列表，请将通过 item\$1id 和维度值标识时间序列的 CSV 文件上载到 S3 存储桶。您还必须定义架构中时间序列的属性和属性类型。

例如，零售商可能想知道广告活动如何影响特定商品（`item_id`）在特定商店位置的销售（`store_location`）。在此用例中，您需要指定由 item\$1id 和 store\$1location 组合的时间序列。

以下 CSV 文件选择以下五个时间序列：

1. Item\$1id：001，store\$1location：西雅图

1. Item\$1id：001，store\$1location：纽约

1. Item\$1id：002，store\$1location：西雅图

1. Item\$1id：002，store\$1location：纽约

1. Item\$1id：003，store\$1location：丹佛

```
001, Seattle
001, New York
002, Seattle
002, New York
003, Denver
```

架构将第一列定义为 `item_id`，第二列定义为 `store_location`。

对于您指定的任何不在输入数据集中的时间序列，都将跳过创建预测。预测导出文件将不包含这些时间序列或其预测值。

## 导出预测
<a name="export-forecast"></a>

创建预测后，您可以将其导出到 Amazon S3 储存桶中。导出预测会将预测作为 CSV 文件（默认）复制到您的 Amazon S3 存储桶中，导出的数据除了项目预测外，还包括任何项目元数据集的所有属性。在导出预测时，您可以指定 Parquet 文件格式。

导出的预测（例如每小时、每天或每周）的粒度是您在创建预测器时指定的预测频率。您可以选择指定 AWS Key Management Service 密钥，以便在数据写入存储桶之前对其进行加密。

**注意**  
导出的文件可以直接从数据集导入中返回信息。如果导入的数据包含公式或命令，则文件易受 CSV 注入影响。因此，导出的文件可能会提示安全警告。为避免恶意活动，请在读取导出的文件时禁用链接和宏。

------
#### [ Console ]

**导出预测**

1. 在导航窗格中，在您的数据集组下，选择 **Forecasts (预测)**。

1. 选择预测的单选按钮，然后选择**创建预测导出**。此时将显示 **Create forecast export (创建预测导出)** 页面。

1. 在 **Create forecast export (创建预测导出)** 页面上，对于 **Export details (导出详细信息)**，提供以下信息。
   + **导出名称** – 输入预测导出作业的名称。
   + **生成的预测** – 从下拉菜单中，选择您在 `Step 3: Create a Forecast` 中创建的预测。
   + **IAM 角色** – 您可以选择保留默认，**输入自定义 IAM 角色 ARN**，也可以选择**创建新角色**，让 Amazon Forecast 为您创建角色。
   + **自定义 IAM 角色 ARN** – 如果您要输入自定义 IAM 角色，请输入您在 [为 Amazon Forecast（IAM 控制台）创建 IAM 角色](aws-forecast-iam-roles.md#aws-forecast-create-iam-role-with-console) 中创建的 IAM 角色的 Amazon 资源名称（ARN）。
   + **KMS 密钥 ARN** — 如果您使用 AWS Key Management Service 存储桶加密，请提供密钥的亚马逊资源名称 (ARN)。 AWS KMS 
   + **S3 预测导出位置** – 使用以下格式输入您的 Amazon Simple Storage Service（Amazon S3）存储桶或该存储桶中文件夹的位置：

     **s3://<name of your S3 bucket>/<folder path>/**

1. 选择 **Create forecast export (创建预测导出)**。此时会显示 **my\$1forecast** 页面。

   等待 Amazon Forecast 完成导出预测。此过程可能需要几分钟或更长时间。当您的预测已导出时，状态会转换为**活动**，并且您可以在 Amazon S3 存储桶中找到预测文件。

------
#### [ CLI ]

要使用导出预测， AWS CLI 请使用`export-forecast-job`命令。为预测导出作业命名，指定要导出的预测的 ARN，并可选择添加任何标签。对于`destination`，请指定输出 Amazon S3 存储桶的路径、您在中创建的 IAM 角色的 ARN[为 Amazon Forecast（IAM 控制台）创建 IAM 角色](aws-forecast-iam-roles.md#aws-forecast-create-iam-role-with-console)，如果您使用 AWS KMS 密钥进行存储桶加密，则指定密钥的 ARN。

有关必需参数和可选参数的更多信息，请参阅 [CreateForecastExportJob](API_CreateForecastExportJob.md) 操作。

```
forecast create-forecast-export-job \
--forecast-export-job-name exportJobName \
--forecast-arn arn:aws:forecast:region:acctNumber:forecast/forecastName \
--destination S3Config="{Path='s3://bucket/folderName',RoleArn='arn:aws:iam::acctNumber:role/Role, KMSKeyArn='arn:aws:kms:region:accountNumber:key/keyID'}"
--tags Key=key1,Value=value1 Key=key2,Value=value2
```

------
#### [ Python ]

要使用适用于 Python（Boto3）的 SDK 导出预测，请使用 `export_forecast_job` 方法。为预测导出作业命名，指定要导出的预测的 ARN，并可选择添加任何标签。对于`Destination`，请指定输出 Amazon S3 存储桶的路径、您在中创建的 IAM 角色的 ARN[为 Amazon Forecast（IAM 控制台）创建 IAM 角色](aws-forecast-iam-roles.md#aws-forecast-create-iam-role-with-console)，如果您使用 AWS KMS 密钥进行存储桶加密，则指定密钥的 ARN。

有关必需参数和可选参数的更多信息，请参阅 [CreateForecastExportJob](API_CreateForecastExportJob.md) 操作。

```
import boto3
           
forecast = boto3.client('forecast')

export_forecast_response = forecast.create_forecast_export_job(
   Destination = {
      "S3Config": { 
         "Path": "s3://bucketName/folderName/",
         "RoleArn": "arn:aws:iam::accountNumber:role/roleName",
         "KMSKeyArn": "arn:aws:kms:region:accountNumber:key/keyID"
      }
   },
   ForecastArn = "arn:aws:forecast:region:accountNumber:forecast/forecastName",
   ForecastExportJobName = "export_job_name",
   Tags = [ 
      { 
         "Key": "key1",
         "Value": "value1"
      },
      { 
         "Key": "key2",
         "Value": "value2"
      }
   ]
)
forecast_export_job_arn = export_forecast_response["ForecastExportJobArn"]
print(forecast_export_job_arn)
```

------

## 查询预测
<a name="query-forecast"></a>

您可以使用 [QueryForecast](API_forecastquery_QueryForecast.md) 操作查询预测。默认情况下，返回预测的完整范围。您可以请求完整预测中的特定日期范围。

当您查询预测时，必须指定筛选条件。筛选条件是密钥值对。键是用于创建预测的其中一个数据集中的架构属性名称之一（包括预测维度）。*值* 是指定密钥的有效值。您可以指定多个密钥值对。返回的预测将只包含满足所有条件的项目。

## 冷启动预测
<a name="coldstart-forecast"></a>

零售、制造或快速消费品等行业的客户面临的一个常见挑战是对没有历史数据的商品进行预测。这种情况称为冷启动预测，通常在企业向市场推出新产品、上市品牌或产品目录或在新地区交叉销售产品时发生。

Amazon Forecast 需要项目元数据才能执行冷启动预测。Forecast 利用在项目元数据中发现的项目特征，明确标识项目元数据中与没有历史数据的项目相似的项目。Forecast 使用现有项目的需求特征为新项目生成冷启动预测。

Amazon Forecast 将冷启动项目识别为包含在项目元数据文件中但未包含在目标时间序列文件中的项目。要正确识别冷启动项目，请确保将冷启动项目的项目 ID 作为一行输入到项目元数据文件中，并且未将其输入到目标时间序列文件中。对于多个冷启动项目，请在项目元数据文件中将每个项目 ID 作为单独的行输入。如果冷启动项目没有项目 ID，则可以使用任何小于 64 个字符且尚未被数据集中的其他项目使用的字母数字组合。

Coldstart 预测既需要项目元数据集又需要一个. AutoPredictor 