

 O Amazon Forecast não está mais disponível para novos clientes. Os clientes existentes do Amazon Forecast podem continuar usando o serviço normalmente. [Saiba mais](https://aws.amazon.com/blogs/machine-learning/transition-your-amazon-forecast-usage-to-amazon-sagemaker-canvas/)

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Conceitos básicos (AWS CLI)
<a name="gs-cli"></a>

Neste exercício, você usa o AWS Command Line Interface (AWS CLI) para explorar o Amazon Forecast. Você cria um conjunto de dados do Amazon Forecast, treina um preditor e usa o preditor resultante para gerar uma previsão. Antes de começar, certifique-se de ter uma Conta da AWS e de ter configurado a AWS CLI. Para obter mais informações, consulte [Configuração](setup.md).

**nota**  
Os AWS CLI comandos deste exercício foram testados no Linux. Para obter informações sobre como usar os AWS CLI comandos no Windows, consulte [Especificando valores de parâmetros para o AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/cli-using-param.html) no *Guia do AWS Command Line Interface Usuário*.

## Etapa 1: Importar dados de treinamento
<a name="gs-create-ds"></a>

Comece criando um conjunto de dados e importando os dados de uso de eletricidade nele.

**Para criar um conjunto de dados do Amazon Forecast**

1. Decida qual domínio e tipo de conjunto de dados são apropriados.

   Os dados de treinamento que você importará no conjunto de dados influencia sua opção de domínio e tipo de conjunto de dados. Portanto, vamos analisar algumas linhas de exemplo dos dados de uso de eletricidade:

   ```
   2014-01-01 01:00:00,   2.53807106598985, client_0
   2014-01-01 01:00:00, 23.648648648648624, client_1
   2014-01-01 02:00:00,  9.648648648612345, client_0
   ```

   O formato dos dados é CSV (valores separados por vírgulas) e é coletado por hora (conforme mostrado pelos timestamps). Inclui as seguintes colunas:
   + Coluna 1: carimbos de data/hora que mostram quando o uso de eletricidade foi registrado.
   + Coluna 2: valores de uso de eletricidade por hora (observe como os valores de carimbo de data e hora aumentam por hora).
   + Coluna 3: valores de ID de cliente que identificam os clientes que usam eletricidade.

   Para esses dados, escolha os seguintes domínio e tipo de conjunto de dados predefinidos:
   + Domínio personalizado: nenhum dos domínios de conjunto de dados, como METRICS, RETAIL ou WEB\$1TRAFFIC, se aplica a esses dados; portanto, escolha o domínio personalizado.
   + Tipo de séries temporais de destino: os dados são uma série temporal porque rastreiam o uso de eletricidade ao longo do tempo. Ele também inclui o *destino* que queremos prever (Coluna 2, uso de eletricidade). Portanto, escolha o tipo de conjunto de dados séries temporais de destino.

     Para entender por que você escolhe esse tipo, consulte [Domínios e tipos de conjunto de dados predefinidos](howitworks-domains-ds-types.md).

1. Escolha um esquema de conjunto de dados.

   O tipo de séries temporais de destino para o [Domínio CUSTOM](custom-domain.md) requer os campos `timestamp`, `target_value` e `item_id`. O campo `target_value` é o destino. O Amazon Forecast gera a previsão desse campo.

   Para mapear os campos obrigatórios para colunas em seus dados, crie um esquema. Cada *atributo* no esquema é mapeado para um campo nos dados.
**Importante**  
A ordem dos atributos no esquema deve corresponder à ordem dos campos nos dados de treinamento.

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

   Agora você tem as informações necessárias para criar um conjunto de dados e importar dados nele.

1. Crie o conjunto de dados.

   ```
   aws forecast create-dataset \
   --dataset-name electricity_demand_ds \
   --domain CUSTOM \
   --dataset-type TARGET_TIME_SERIES \
   --data-frequency H \
   --schema '{
     "Attributes": [
       {
         "AttributeName": "timestamp",
         "AttributeType": "timestamp"
       },
       {
         "AttributeName": "target_value",
         "AttributeType": "float"
       },
       {
         "AttributeName": "item_id",
         "AttributeType": "string"
       }
     ]
   }'
   ```

   Na solicitação, o valor `H` de `data-frequency` representa uma frequência de coleta de dados por hora. O seguinte é um exemplo de resposta.

   ```
   {
       "DatasetArn": "arn:aws:forecast:us-west-2:acct-id:dataset/electricity_demand_ds"
   }
   ```

   Para obter mais informações sobre essa operação, consulte [CreateDataset](API_CreateDataset.md).

1. (Opcional) Obtenha a descrição do conjunto de dados:

   ```
   aws forecast describe-dataset \
   --dataset-arn arn:aws:forecast:us-west-2:acct-id:dataset/electricity_demand_ds
   ```

   O seguinte é um exemplo de resposta.

   ```
   {
       "DatasetName": "electricity_demand_ds",
       "DatasetArn": "arn:aws:forecast:us-west-2:acct-id:dataset/electricity_demand_ds",
       "CreationTime": 1564533087.907,
       "LastModificationTime": 1564533087.907,
       "Domain": "CUSTOM",
       "DatasetType": "TARGET_TIME_SERIES",
       "DataFrequency": "H",
       "Schema": { ... },
       "EncryptionConfig": {},
       "Status": "ACTIVE"
   }
   ```
**nota**  
A ordem dos pares de chave-valor na resposta é arbitrária.

1. Crie um grupo de conjuntos de dados e adicione o conjunto de dados a ele: O valor do parâmetro `domain` deve corresponder ao `domain` do conjunto de dados.

   ```
   aws forecast create-dataset-group \
   --dataset-group-name electricity_ds_group \
   --dataset-arns arn:aws:forecast:us-west-2:acct-id:dataset/electricity_demand_ds \
   --domain CUSTOM
   ```

   O seguinte é um exemplo de resposta.

   ```
   {
       "DatasetGroupArn": "arn:aws:forecast:us-west-2:acct-id:dataset-group/electricity_ds_group"
   }
   ```

   Para obter mais informações sobre essa operação, consulte [CreateDatasetGroup](API_CreateDatasetGroup.md).

1. (Opcional) Obtenha a descrição do grupo de conjuntos de dados.

   ```
   aws forecast describe-dataset-group \
   --dataset-group-arn arn:aws:forecast:us-west-2:acct-id:dataset-group/electricity_ds_group
   ```

   O seguinte é um exemplo de resposta.

   ```
   {
       "DatasetGroupName": "electricity_ds_group",
       "DatasetGroupArn": "arn:aws:forecast:us-west-2:acct-id:dataset-group/electricity_ds_group",
       "DatasetArns": [
           "arn:aws:forecast:us-west-2:acct-id:dataset-group/electricity_ds_group"
       ],
       "Domain": "CUSTOM",
       "CreationTime": 1564533719.852,
       "LastModificationTime": 1564533719.852,
       "Status": "ACTIVE"
   }
   ```

1. Importe os dados de treinamento de uso de eletricidade do bucket do Amazon S3 para o conjunto de dados. O perfil do IAM fornecido por você deve ter permissão para ler dados do bucket do S3. Para obter informações sobre como criar um perfil do IAM, consulte [Criar um perfil do IAM para o Amazon Forecast (AWS CLI)](aws-forecast-iam-roles.md#aws-forecast-create-iam-role-with-cli).

   ```
   aws forecast create-dataset-import-job \
   --dataset-arn arn:aws:forecast:us-west-2:acct-id:dataset/electricity_demand_ds \
   --dataset-import-job-name electricity_ds_import_job \
   --data-source '{
       "S3Config": {
         "Path": "s3://bucket/electricityusagedata.csv",
         "RoleArn": "arn:aws:iam::acct-id:role/Role"
       }
     }'
   ```

   Veja a seguir a sintaxe abreviada do parâmetro `data-source`.

   ```
   --data-source S3Config="{Path='s3://bucket/electricityusagedata.csv',RoleArn='arn:aws:iam::acct-id:role/Role'}"
   ```

   O seguinte é um exemplo de resposta.

   ```
   {
       "DatasetImportJobArn": "arn:aws:forecast:us-west-2:acct-id:dataset-import-job/electricity_demand_ds/electricity_ds_import_job"
   }
   ```

   Para obter mais informações sobre essa operação, consulte [CreateDatasetImportJob](API_CreateDatasetImportJob.md).

1. Verifique o status da importação. 

   ```
   aws forecast describe-dataset-import-job \
   --dataset-import-job-arn arn:aws:forecast:us-west-2:acct-id:dataset-import-job/electricity_demand_ds/electricity_ds_import_job
   ```

   O seguinte é um exemplo de resposta.

   ```
   {
       "DatasetImportJobName": "electricity_ds_import_job",
       "DatasetImportJobArn": "arn:aws:forecast:us-west-2:acct-id:dataset-import-job/electricity_demand_ds/electricity_ds_import_job",
       "DatasetArn": "arn:aws:forecast:us-west-2:acct-id:dataset/electricity_demand_ds",
       "DataSource": {
           "S3Config": {
               "Path": "s3://bucket/electricityusagedata.csv",
               "RoleArn": "arn:aws:iam::acct-id:role/ForecastRole"
           }
       },
       "DataSize": 0.14639010466635227,
       "TimeStampFormat": "yyyy-MM-dd HH:mm:ss",
       "CreationTime":  1564537011.114,
       "LastModificationTime": 1564537028.223,
       "Status": "CREATE_IN_PROGRESS"
   }
   ```

   Quando todos os dados tiverem sido importados, o status mudará para ACTIVE e a resposta incluirá estatísticas para os dados, conforme mostrado no exemplo a seguir.

   ```
   {
       "DatasetArn": "arn:aws:forecast:us-west-2:acct-id:dataset/electricity_demand_ds",
       "Status": "ACTIVE",
       "FieldStatistics": {
           "date": {
               "Min": "2014-01-01T01:00:00Z",
               "Max": "2015-01-01T00:00:00Z",
               "Count": 3241200,
               "CountDistinct": 8760,
               "CountNull": 0
           },
           "target": {
               "Min": "0.0",
               "Max": "168200.0",
               "Avg": 606.5167610461679,
               "Stddev": 3518.405223972031,
               "Count": 3241200,
               "CountDistinct": 1196961,
               "CountNull": 0,
               "CountNan": 0
           },
           "item": {
               "Count": 3241200,
               "CountDistinct": 370,
               "CountNull": 0
           }
       },
       ...
   }
   ```
**Importante**  
Você deve aguardar até que o status esteja ACTIVE antes de criar um preditor com o grupo de conjuntos de dados.

   Para obter mais informações sobre essa operação, consulte [DescribeDatasetImportJob](API_DescribeDatasetImportJob.md).

## Etapa 2: Criar um preditor
<a name="gs-create-predictor"></a>

Para criar um preditor, você usa a operação [CreateAutoPredictor](API_CreateAutoPredictor.md) e fornece as seguintes informações:
+ **Nome do preditor:** atribua um nome ao preditor para que você possa distingui-lo de seus outros preditores
+ **Grupo de conjuntos de dados:** você criou o grupo de conjuntos de dados na etapa anterior.
+ **Frequência de previsão:** a granularidade de suas previsões (por hora, diariamente, semanalmente etc.).
+ **Horizonte de previsão:** o número de etapas de tempo que estão sendo previstas.

Depois que o preditor for criado, analise as métricas de precisão geradas pelo Amazon Forecast. As métricas ajudam você a decidir se deseja usar o preditor para gerar uma previsão. Para obter mais informações sobre preditores, consulte [Como treinar preditores](howitworks-predictor.md).

**Para criar um preditor e analisar as métricas de precisão**

1. Crie o preditor.

   ```
   aws forecast create-predictor \
   --predictor-name electricitypredictor \
   --input-data-config DatasetGroupArn="arn:aws:forecast:us-west-2:acct-id:dsgroup/electricity_ds_group" \
   --forecast-horizon 36 \
   --forecast-frequency D
   ```

   O seguinte é um exemplo de resposta.

   ```
   {
       "PredictorArn": "arn:aws:forecast:us-west-2:acct-id:predictor/electricitypredictor"
   }
   ```

1. Obtenha o status do preditor.

   ```
   aws forecast describe-predictor \
   --predictor-arn arn:aws:forecast:us-west-2:acct-id:predictor/electricitypredictor
   ```

   O seguinte é um exemplo de resposta.

   ```
   {
       "PredictorArn": "arn:aws:forecast:<region>:<acct-num>:predictor/electricitypredictor",
       "PredictorName": "electricitypredictor",
       "ForecastHorizon": 36,
       "ForecastTypes": [
           "0.1",
           "0.5",
           "0.9"
       ],
       "ForecastFrequency": "D",
       "DatasetImportJobArns": [
           "arn:aws:forecast:<region>:<acct-num>:dataset-import-job/getting_started_dataset/gs_import"
       ],
       "DataConfig": {
           "DatasetGroupArn": "arn:aws:forecast:<region>:<acct-num>:dataset-group/getting_started",
           "AttributeConfigs": [
               {
                   "AttributeName": "target_value",
                   "Transformations": {
                       "aggregation": "sum",
                       "backfill": "zero",
                       "frontfill": "none",
                       "middlefill": "zero"
                   }
               }
           ]
       },
       "EstimatedTimeRemainingInMinutes": 97,
       "Status": "CREATE_IN_PROGRESS",
       "CreationTime": "2022-02-23T09:26:24.643000-08:00",
       "LastModificationTime": "2022-02-23T09:49:26.899000-08:00",
       "ExplainabilityInfo": {
           "Status": "NOT_AVAILABLE"
       }
   }
   ```
**Importante**  
O treinamento do modelo é demorado. Não prossiga até que o treinamento seja concluído e o status do preditor seja ACTIVE.

1. Obtenha a precisão de métricas para o preditor.

   ```
   aws forecast get-accuracy-metrics \
   --predictor-arn arn:aws:forecast:us-west-2:acct-id:predictor/electricitypredictor
   ```

   O seguinte é um exemplo de resposta.

   ```
   {
       "PredictorEvaluationResults": [
           {
               "TestWindows": [
                   {
                       "EvaluationType": "SUMMARY",
                       "Metrics": {
                           "RMSE": 448.19602551622864,
                           "WeightedQuantileLosses": [
                               {
                                   "Quantile": 0.9,
                                   "LossValue": 0.11574311406253326
                               },
                               {
                                   "Quantile": 0.5,
                                   "LossValue": 0.1706269067283527
                               },
                               {
                                   "Quantile": 0.1,
                                   "LossValue": 0.11724164222477837
                               }
                           ]
                       }
                   },
                   {
                       "EvaluationType": "COMPUTED",
                       "Metrics": {
                           "RMSE": 448.19602551622864,
                           "WeightedQuantileLosses": [
                               {
                                   "Quantile": 0.9,
                                   "LossValue": 0.11574311406253326
                               },
                               {
                                   "Quantile": 0.5,
                                   "LossValue": 0.1706269067283527
                               },
                               {
                                   "Quantile": 0.1,
                                   "LossValue": 0.11724164222477837
                               }
                           ]
                       },
                       "TestWindowEnd":   1420070400.0,
                       "TestWindowStart": 1420002000.0
                   }
               ]
           }
       ]
   }
   ```

   As métricas mostram a perda de erro para cada quantil. Por exemplo, ocorreu um erro de 11,7% para o primeiro quantil. As métricas também mostram o root-mean-square erro (`RMSE`).

   As métricas de resumo mostram a média das métricas calculadas em todas as janelas de teste. Como havia apenas uma janela de teste, o resumo e as métricas calculadas são iguais.

   Para obter mais informações sobre essa operação, consulte [GetAccuracyMetrics](API_GetAccuracyMetrics.md).

## Etapa 3: Criar uma previsão
<a name="gs-create-campaign"></a>

O Amazon Forecast gera uma previsão para o campo `target_value` (conforme determinado pelo domínio e tipo de conjunto de dados) em cada `item_id` exclusivo no conjunto de dados. Neste exercício, o `target_value` campo fornece o uso de eletricidade e o `item_id` cliente IDs. Você obtém uma previsão para o uso de eletricidade por hora pelo cliente.

Após a criação da previsão, é possível consultar um único item ou exportar a previsão completa.

**Para criar, recuperar e exportar uma previsão**

1. Crie a previsão.

   ```
   aws forecast create-forecast \
   --forecast-name electricityforecast \
   --predictor-arn arn:aws:forecast:us-west-2:acct-id:predictor/electricitypredictor
   ```

   A operação usa o preditor para criar uma previsão. Na resposta, você obtém o nome de recurso da Amazon (ARN) da previsão. Esse ARN é usado para recuperar e exportar a previsão. O seguinte é um exemplo de resposta.

   ```
   {
       "ForecastArn": "arn:aws:forecast:us-west-2:acct-id:forecast/electricityforecast"
   }
   ```

   Para obter mais informações sobre essa operação, consulte [CreateForecast](API_CreateForecast.md).

1. Recupere as duas primeiras horas da previsão para o `client_1`.
**nota**  
O nome do serviço, `forecastquery`, é diferente do nome do serviço usado em outro lugar.

   ```
   aws forecastquery query-forecast \
   --forecast-arn arn:aws:forecast:us-west-2:acct-id:forecast/electricityforecast \
   --start-date 2015-01-01T00:00:00 \
   --end-date   2015-01-01T02:00:00 \
   --filters '{"item_id":"client_1"}'
   ```

   A operação inclui os parâmetros a seguir.
   + `start-date` e `end-date`: especifica um intervalo de datas opcional no qual a previsão será recuperada. Se você não especificar esses parâmetros, a operação retornará a previsão inteira para `client_1`.
   + `filters`: especifica o filtro `item_id` para recuperar a previsão de eletricidade para `client_1`.

     Veja a seguir a sintaxe abreviada do parâmetro `filters`.

     ```
     --filters item_id="client_1"
     ```

   O seguinte é um exemplo de resposta.

   ```
   {
       "Forecast": {
           "Predictions": {
               "mean": [
                   {
                       "Timestamp": "2015-01-01T01:00:00",
                       "Value": 20.952411651611328
                   },
                   {
                       "Timestamp": "2015-01-01T02:00:00",
                       "Value": 19.11078453063965
                   }
               ],
               "p90": [
                   {
                       "Timestamp": "2015-01-01T01:00:00",
                       "Value": 24.524038314819336
                   },
                   {
                       "Timestamp": "2015-01-01T02:00:00",
                       "Value": 22.319091796875
                   }
               ],
               "p50": [
                   {
                       "Timestamp": "2015-01-01T01:00:00",
                       "Value": 20.7841739654541
                   },
                   {
                       "Timestamp": "2015-01-01T02:00:00",
                       "Value": 19.237524032592773
                   }
               ],
               "p10": [
                   {
                       "Timestamp": "2015-01-01T01:00:00",
                       "Value": 18.507278442382812
                   },
                   {
                       "Timestamp": "2015-01-01T02:00:00",
                       "Value": 16.15062141418457
                   }
               ]
           }
       }
   }
   ```

   Como essa é uma previsão por hora, a resposta mostra valores de previsão por hora. Na resposta, observe o seguinte:
   + `mean`: na data e hora especificadas, a média é o valor médio de uso de eletricidade previsto para o cliente.
   + `p90`, `p50` e `p10`: especifica o nível de confiança de que o valor real estará abaixo do valor listado na data e hora especificadas. Por exemplo, em 2015-01-01T01:00:00, o Amazon Forecast está 90% confiante de que o uso de eletricidade estará abaixo de 24,5. O Amazon Forecast tem 50% de confiança de que o uso estará abaixo de 20,8 e 10% de confiança de que o uso estará abaixo de 18,5.

   Para obter mais informações sobre essa operação, consulte [QueryForecast](API_forecastquery_QueryForecast.md).

1. Exporte a previsão completa para o bucket do Amazon S3. O perfil do IAM fornecido deve ter permissão para gravar dados no bucket do S3. Para obter informações sobre como criar um perfil do IAM, consulte [Criar um perfil do IAM para o Amazon Forecast (AWS CLI)](aws-forecast-iam-roles.md#aws-forecast-create-iam-role-with-cli).

   Crie um trabalho de exportação de previsão.

   ```
   aws forecast create-forecast-export-job \
   --forecast-export-job-name electricityforecast_exportjob \
   --forecast-arn arn:aws:forecast:us-west-2:acct-id:forecast/electricityforecast \
   --destination S3Config="{Path='s3://bucket',RoleArn='arn:aws:iam::acct-id:role/Role'}"
   ```

   O seguinte é um exemplo de resposta.

   ```
   {
      "ForecastExportJobArn": "arn:aws:forecast::us-west-2:acct-id:forecast-export/64bbc087"
   }
   ```

   Para obter mais informações sobre essa operação, consulte [CreateForecastExportJob](API_CreateForecastExportJob.md).

1. Obtenha o status do trabalho de exportação.

   ```
   aws forecast describe-forecast-export-job \
   --forecast-export-job-arn arn:aws:forecast:us-west-2:acct-id:forecast/electricityforecast
   ```

   O seguinte é um exemplo de resposta.

   ```
   {
       "ForecastExportJobArn": "arn:aws:forecast::us-west-2:acct-id:forecast-export/64bbc087",
       "ForecastExportJobName": "electricityforecast_exportjob",
       "Status": "CREATE_IN_PROGRESS"
   }
   ```

   Quando o status for ACTIVE, os arquivos de previsão podem ser encontrados no bucket do S3 especificado.