

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

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

# 天气指数
<a name="weather"></a>

Amazon Forecast 天气指数是一项内置特征化，用于将天气历史信息和预计信息纳入到模型中。天气指数对零售用例非常有用，在此类用例中，温度和降水会大大影响产品需求。

启用天气指数后，如果 Forecast 在预测器训练期间发现精度有所提高，则它只会将此天气特征化应用于时间序列。如果在回测期间用天气信息附加时间序列并不能提高其预测精度，则 Forecast 不会将天气指数应用于此特定的时间序列。

要应用天气指数，您的目标时间序列数据集和所有相关时间序列数据集中都必须包含[地理位置属性](#adding-geolocation)。您还需要为目标时间序列时间戳指定[时区](#specifying-timezones)。有关数据集要求的更多信息，请参阅[条件和限制](#weather-conditions-restrictions)。

**Python 笔记本**  
有关使用天气指数的 step-by-step指南，请参阅[纽约出租车：带天气指数的 Amazon F](https://github.com/aws-samples/amazon-forecast-samples/tree/master/notebooks/advanced/Weather_index) orecast。

**Topics**
+ [启用天气指数](#enabling-weather)
+ [在数据集中添加地理位置信息](#adding-geolocation)
+ [指定时区](#specifying-timezones)
+ [条件和限制](#weather-conditions-restrictions)

## 启用天气指数
<a name="enabling-weather"></a>

在预测器训练阶段启用天气指数。使用该[`CreateAutoPredictor`](API_CreateAutoPredictor.md)操作时，天气指数包含在[AdditionalDataset](API_AdditionalDataset.md)数据类型中。

在启用天气指数之前，您的目标时间序列和相关时间序列数据集中必须包含地理位置属性，并且您必须为时间戳定义时区。有关更多信息，请参阅[添加地理位置信息](#adding-geolocation)和[指定时区](#specifying-timezones)。

您可以使用 Forecast 控制台或 Forecast 软件开发工具包 (SDK) 来启用天气指数。

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

**启用天气指数**

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

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

1. 在导航窗格中，选择**预测器**。

1. 选择**训练新预测器**。

1. 选择**启用天气指数**。

------
#### [ SDK ]

**启用天气指数**

使用该[`CreateAutoPredictor`](API_CreateAutoPredictor.md)操作，通过在[AdditionalDataset](API_AdditionalDataset.md)数据类型`"Value": "true"`中添加`"Name": "weather"`和来启用天气指数。

```
    "DataConfig": { 
        ...
        "AdditionalDatasets": [
            ...                      
            {             
                "Name": "weather",       
            }      
            ]   
        },
```

------

## 在数据集中添加地理位置信息
<a name="adding-geolocation"></a>

要使用天气指数，您必须在目标时间序列和相关时间序列数据集中包含每个项目的地理位置属性。此属性采用数据集架构中的属性类型 `geolocation` 进行定义。

数据集中的所有地理位置值都必须完全在单个区域中。这些区域是：美国（不包括夏威夷和阿拉斯加）、加拿大、南美洲、中美洲、亚太地区、欧洲以及非洲和中东。

使用以下两种格式之一指定地理位置属性：
+ **纬度和经度**（所有区域）- 以十进制格式指定纬度和经度（例如：47.61\$1-122.33）
+ **邮政编码**（仅限美国）- 指定国家/地区代码（美国），后跟 5 位数的邮政编码（例如：US\$198121）

所有区域都支持纬度和经度格式。只有美国地区支持邮政编码格式。

**Topics**
+ [纬度和经度界限](#geolocation-bounds)
+ [在数据集架构中包括地理位置](#geolocation-schema)
+ [设置地理位置格式](#geolocation-format)

### 纬度和经度界限
<a name="geolocation-bounds"></a>

以下是可接受区域的纬度和经度界限：

------
#### [ US Region ]

**界限**：纬度（24.6、50.0）、经度（-126.0、-66.4）。

![\[Map of North America showing United States, parts of Canada and Mexico with major cities.\]](http://docs.aws.amazon.com/zh_cn/forecast/latest/dg/images/weather-us-bounds.png)


------
#### [ Canada Region ]

**界限**：纬度（41.0、75.0）、经度（-142.0、-52.0）。

![\[Map showing northern Canada and parts of the US, highlighting territories and major cities.\]](http://docs.aws.amazon.com/zh_cn/forecast/latest/dg/images/weather-can-bounds.PNG)


------
#### [ Europe Region ]

**界限**：纬度（34.8、71.8）、经度（-12.6、44.8）。

![\[Map of Northern Europe and surrounding regions showing countries and major cities.\]](http://docs.aws.amazon.com/zh_cn/forecast/latest/dg/images/weather-euro-bounds.png)


------
#### [ South America Region ]

**界限**：纬度（-56.6、14.0）、经度（-82.4、-33.00）。

![\[Map of South America showing countries, major cities, and Brazilian states.\]](http://docs.aws.amazon.com/zh_cn/forecast/latest/dg/images/weather-sa-bounds.PNG)


------
#### [ Asia Pacific Region ]

**界限**：纬度（-47.8、55.0）、经度（67.0、180.60）。

![\[Map showing East Asia, Southeast Asia, and Australia with country names and ocean labels.\]](http://docs.aws.amazon.com/zh_cn/forecast/latest/dg/images/weather-apac-bounds.png)


------
#### [ Central America Region ]

**界限**：纬度（6.80、33.20）、经度（-118.80、-58.20）。

![\[Map showing southern US, Mexico, Central America, and Caribbean with major cities and bodies of water.\]](http://docs.aws.amazon.com/zh_cn/forecast/latest/dg/images/weather-ca-bounds.png)


------
#### [ Africa & Middle East Region ]

**界限**：纬度（-35.60、43.40）、经度（-18.80、-58.20）。

![\[Map showing North Africa, Middle East, and parts of Europe with country names and borders.\]](http://docs.aws.amazon.com/zh_cn/forecast/latest/dg/images/weather-africa-bounds.png)


------

### 在数据集架构中包括地理位置
<a name="geolocation-schema"></a>

使用控制台或[CreateDataset](API_CreateDataset.md)操作，在目标时间序列和任何相关时间序列的 JSON 架构中将位置属性类型定义为 “地理位置”。架构中的属性必须按照其在数据集中排列的顺序进行排序。

```
 { 
  "Attributes":[
    {
       "AttributeName": "timestamp",
       "AttributeType": "timestamp"
    },
    {
       "AttributeName": "target_value",
       "AttributeType": "float"
    },
    {
       "AttributeName": "item_id",
       "AttributeType": "string"
    },
    {
       "AttributeName": "location",
       "AttributeType": "geolocation"
    }
  ]
}
```

### 设置地理位置格式
<a name="geolocation-format"></a>

地理位置属性的格式可以是**邮政编码**或**纬度和经度**格式。您可以使用 Forecast 控制台或 Forecast 软件开发工具包 (SDK) 设置地理位置格式。

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

**在时间序列数据集中添加地理位置属性**

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

1. 选择**创建数据集组**。

1. 在**架构生成器**中，将地理位置的**属性类型**设置为 `geolocation`。

1. 在**地理位置格式**的下拉列表中，选择您的位置格式。

![\[Dataset details form with name, frequency, and schema builder for attribute specification.\]](http://docs.aws.amazon.com/zh_cn/forecast/latest/dg/images/schema-builder-geolocation.png)


您也可以在 JSON 格式下定义此属性，并从**地理位置格式**的下拉列表中选择一种位置格式。

------
#### [ SDK ]

**在时间序列数据集中添加地理位置属性**

使用该[ CreateDatasetImportJob](API_CreateDatasetImportJob.md)操作，将的值设置`GeolocationFormat`为以下值之一：
+ **纬度和经度**（所有区域）：`"LAT_LONG"`
+ **邮政编码**（仅限美国）：`"CC_POSTALCODE"`

例如，要指定纬度和经度格式，请在 `CreateDatasetImportJob` 请求中包含以下内容：

```
{
    ...
    "GeolocationFormat": "LAT_LONG"
}
```

------

## 指定时区
<a name="specifying-timezones"></a>

您可以让 Amazon Forecast 自动同步时区信息与地理位置属性，也可以手动为整个数据集分配一个时区。

**Topics**
+ [自动同步时区与地理位置](#timezones-automatic)
+ [手动选择单个时区](#timezones-manual)

### 自动同步时区与地理位置
<a name="timezones-automatic"></a>

此选项非常适合包含多个时区的时间戳且这些时间戳以当地时间表示的数据集。Forecast 根据项目的地理位置属性为目标时间序列数据集中的每个项目分配时区。

您可以使用 Forecast 控制台或 Forecast SDK 自动同步时间戳与地理位置属性。

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

**同步时区与地理位置属性**

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

1. 在导航窗格中，选择**创建数据集组**。

1. 在**数据集导入详细信息**中，选择**同步时区与位置**。

![\[Dataset import form with fields for name, time zone, S3 data location, and IAM role.\]](http://docs.aws.amazon.com/zh_cn/forecast/latest/dg/images/sync-timezone-with-geolocation.PNG)


------
#### [ SDK ]

**同步时区与地理位置属性**

使用该[ CreateDatasetImportJob](API_CreateDatasetImportJob.md)操作，将设置`"UseGeolocationForTimeZone"`为`"true"`。

```
{
    ...
    "UseGeolocationForTimeZone": "true"
}
```

------

### 手动选择单个时区
<a name="timezones-manual"></a>

**注意**  
您可以手动选择*美国地区*、*加拿大地区*、*南美洲地区*、*中美洲地区*、*亚太地区*、*欧洲地区*以及*非洲和中东地区*以外的一个时区。但是，所有地理定位值都必须仍然在其中一个区域内。

此选项非常适合所有时间戳都在单个时区内的数据集，或者所有时间戳都标准化为单个时区的数据集。使用此选项可将相同时区应用于数据集中的每个项目。

天气指数可接受以下时区：

 **美国地区** 
+  美洲/洛杉矶 
+  America/Phoenix 
+  America/Denver 
+  America/Chicago 
+  America/New\$1York 

 **加拿大地区** 
+ 美洲/温哥华
+ 美洲/埃德蒙顿
+ 美洲/里贾纳 
+ 美洲/温尼伯 
+ 美洲/多伦多
+ 美洲/哈利法克斯
+ 美洲/圣约翰斯

 **欧洲地区** 
+ 欧洲地区/伦敦 
+ 欧洲/巴黎 
+ 欧洲/赫尔辛基 

 **南美洲地区** 
+ 美洲/布宜诺斯艾利斯
+ 美洲/诺罗尼亚
+ 美洲/加拉加斯 

 **亚太地区** 
+ 亚洲/喀布尔 
+ 亚洲/卡拉奇 
+ 亚洲/加尔各答 
+ 亚洲/加德满都 
+ 亚洲/达卡 
+ 亚洲/仰光 
+ 亚洲/曼谷 
+ 亚洲/新加坡 
+ 亚洲/首尔 
+ 澳大利亚/阿德莱德 
+ 澳大利亚/墨尔本 
+ 澳大利亚/豪勋爵岛 
+ 澳大利亚/尤克拉 
+ 太平洋/诺福克岛 
+ 太平洋/奥克兰 

 **中美洲** 
+ 美洲/波多黎各

 **非洲和中东** 
+ 非洲/内罗毕 
+ 亚洲/德黑兰 
+ 亚洲/迪拜

 **其他** 
+ 太平洋/中途岛 
+ 太平洋/檀香山 
+ 太平洋/马克萨斯 
+ 美洲/安克雷奇 
+ 大西洋/佛得角 
+ 亚洲/阿纳德尔 
+ 太平洋/查塔姆 
+ 太平洋/恩德伯里 
+ 太平洋/圣诞岛 

如果您数据集中的项目位于一个可接受的区域，但您的时间戳已标准化为该区域以外的时区，则请从**其他**列表中选择一个时区。

有关有效时区的完整名称列表，请参阅 [Joda-Time 库](http://joda-time.sourceforge.net/timezones.html) 。

您可以使用 Forecast 控制台或 Forecast SDK 为数据集手动设置一个时区。

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

**为数据集选择单个时区**

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

1. 在导航窗格中，选择**创建数据集组**。

1. 在**数据集导入详细信息**中，选定**选择时区**。

例如，使用以下方式将洛杉矶时间（太平洋标准时间）应用于您的数据集。

![\[Dataset import form with fields for name, time zone, data location, and IAM role.\]](http://docs.aws.amazon.com/zh_cn/forecast/latest/dg/images/select-timezone.PNG)


------
#### [ SDK ]

**为数据集选择单个时区**

使用该[ CreateDatasetImportJob](API_CreateDatasetImportJob.md)操作，设置`"TimeZone"`为有效的时区。

例如，使用以下方式将洛杉矶时间（太平洋标准时间）应用于您的数据集。

```
{
    ...
    "TimeZone": "America/Los_Angeles"
}
```

------

## 条件和限制
<a name="weather-conditions-restrictions"></a>

使用天气指数时适用以下条件和限制：
+ **可用算法**：如果您使用传统预测器，则可以在使用 CNN-QR、DeepAR\$1 和 Prophet 算法训练预测器时启用天气指数。天气指数不适用于 ARIMA、ETS 和 NPTS。
+ **预测频率**：有效的预测频率为 `Minutely`、`Hourly` 和 `Daily`。
+ **预测范围**：预测范围的跨度不能超过未来的 14 天。有关每个预测频率的预测范围限制，请参阅以下列表：
  + `1 minute`-500
  + `5 minutes`-500
  + `10 minutes`-500
  + `15 minutes`-500
  + `Hourly`-330
  + `Daily`-14
+ **时间序列长度**：在使用天气指数训练模型时，Forecast 会截断所有时间戳早于 Forecast 天气数据集特征化开始日期的时间序列数据集。Forecast 天气数据集特征化包含以下开始日期：
  + **美国地区**：2018 年 7 月 2 日
  + **欧洲地区**：2018 年 7 月 2 日
  + **亚太地区**：2018 年 7 月 2 日
  + **加拿大地区**：2019 年 7 月 2 日
  + **南美洲地区**：2020 年 1 月 2 日
  + **中美洲地区**：2020 年 9 月 2 日
  + **非洲和中东地区**：2021 年 3 月 25 日

  启用天气指数后，在预测器训练期间不会使用时间戳早于开始日期的数据点。
+ **位置数量**：目标时间序列数据集中的唯一位置不能超过 2000 个。
+ **区域界限**：数据集中的所有项目都必须位于单个区域内。
+ **最小时间序列长度**：由于测试天气指数时需要附加数据，因此时间序列数据集的最小长度为：

  `3 × ForecastHorizon + (BacktestWindows + 1) × BacktestWindowOffset`

  如果您的时间序列数据集不符合此要求，则请考虑减少以下内容：
  + `ForecastHorizon` - 减小预测范围。
  + `BacktestWindowOffset` - 在回测期间缩短测试集的长度。
  + `BacktestWindows` - 减少回测数量。