Setup AWS SDK for Python (Boto3)
- Amazon Personalize can be accessed and managed using AWS SDK for Python, known as Boto3. Install boto3 using pip if not already done.
- Ensure your AWS credentials are configured. You can do this by setting up an IAM user with appropriate permissions and configuring your credentials file or using environment variables.
pip install boto3
Create and Import Solutions
- With AWS Personalize, you first need to create a dataset to store user-item interaction data, and then create a solution using this dataset. This involves specifying a recipe, which acts as an algorithm blueprint.
- You can create the dataset, import data using CSV files stored in S3, and then train a model via the Boto3 client for Personalize.
import boto3
personalize = boto3.client('personalize')
# Example of creating a dataset import job
response = personalize.create_dataset_import_job(
jobName='import-job',
datasetArn='arn:aws:personalize:us-west-2:123456789012:dataset/my-dataset',
dataSource={
'dataLocation': 's3://bucket-name/your-data.csv'
},
roleArn='arn:aws:iam::123456789012:role/PersonalizeRole'
)
Deploy in a Campaign
- Once you have created and trained a solution version, the next step is to deploy it as a campaign for real-time inference.
- Handle campaign creation through Boto3, which will enable you to use your model to get personalized recommendations.
response = personalize.create_campaign(
name='my-recommendation-campaign',
solutionVersionArn='arn:aws:personalize:us-west-2:123456789012:solution/my-solution/version/1.0',
minProvisionedTPS=1
)
Get Recommendations
- Use the created campaign to get recommendations for your users. You'll need the campaign ARN and the user ID for which you want recommendations.
- Handle response data to tailor product or content views for users on your platform effectively.
personalize_runtime = boto3.client('personalize-runtime')
response = personalize_runtime.get_recommendations(
campaignArn='arn:aws:personalize:us-west-2:123456789012:campaign/my-recommendation-campaign',
userId='user-123'
)
item_list = response['itemList']
for item in item_list:
print(f"Recommended item ID: {item['itemId']}")
Monitor and Optimize
- Periodically review the performance metrics of your campaign, optimizing the model as needed based on user feedback and changing data patterns.
- Iterate upon data inputs, retrain new solutions, and fine-tune campaigns to ensure your recommendations remain relevant and effective.
# Example code for describing a campaign to monitor status
response = personalize.describe_campaign(
campaignArn='arn:aws:personalize:us-west-2:123456789012:campaign/my-recommendation-campaign'
)
print("Campaign Update Status: ", response['campaign']['status'])