Overview of Amazon Forecast
- Amazon Forecast is a fully managed service that uses machine learning to produce highly accurate forecasts through a simple API.
- For using the Amazon Forecast API with Python, you will typically need to interact with AWS SDK for Python, known as Boto3.
Preparing Your Environment
- Install Boto3 and AWS CLI using pip to facilitate your interactions with AWS services.
pip install boto3 awscli
Defining a Dataset Group and Dataset Types
- Create a dataset group in Amazon Forecast, which serves as a container for your datasets. You can create datasets for target time series, related time series, and item metadata.
- Understand the schemas needed. The target time series dataset is crucial as it includes the key metrics over a series of time.
import boto3
forecast = boto3.client('forecast', region_name="your-region")
response = forecast.create_dataset_group(
DatasetGroupName="your-dataset-group",
Domain="CUSTOM"
)
Importing Your Dataset
- Import your data into Amazon Forecast using a specified schema. You typically create a dataset, upload your data to an S3 bucket, and then import the data into Forecast.
- Ensure your data in the S3 bucket is in CSV format and structured according to your defined schema.
s3_data_import = forecast.create_dataset_import_job(
DatasetImportJobName='forecast_import_job',
DatasetArn='your-dataset-arn',
DataSource={
'S3Config': {
'Path': 's3://your-bucket-name/your-data.csv',
'RoleArn': 'your-role-arn'
}
},
TimestampFormat="yyyy-MM-dd hh:mm:ss"
)
Creating a Predictor
- Predictors are essentially machine learning models trained to predict your target variables. Amazon Forecast supports multiple algorithms, but AutoML usually results in the best option without much configuration.
- Specify forecast horizon and forecast types when creating a predictor.
response = forecast.create_predictor(
PredictorName='your_predictor_name',
ForecastHorizon=10,
PerformAutoML=True,
InputDataConfig={
'DatasetGroupArn': 'your-dataset-group-arn',
},
FeaturizationConfig={
'ForecastFrequency': 'D',
'Featurizations': []
}
)
Generating a Forecast
- Once the predictor is trained, generate forecasts by linking it to your dataset group.
- Forecast results can be downloaded in a CSV format via the AWS console or using the ListForecastExportJobs API.
response = forecast.create_forecast(
ForecastName='your_forecast_name',
PredictorArn='your_predictor-arn'
)
Retrieving the Forecast
- Retrieve your forecast using Amazon Forecast's QueryForecast API, which allows you to input parameters like start date, end date, and filters.
- This API returns the predicted values, giving insights into your data's future behavior.
forecast_query = boto3.client('forecastquery')
response = forecast_query.query_forecast(
ForecastArn='your-forecast-arn',
StartDate='2023-01-01T00:00:00',
EndDate='2023-12-31T00:00:00',
Filters={"item_id": "your-item-id"}
)
predicted_values = response['Forecast']['Predictions']['p10']
Conclusion
- Using the Amazon Forecast API in Python allows you to integrate machine learning-powered predictions into your workflows seamlessly. Remember to handle the service limits and data input requirements efficiently.