入门(SDK适用于 Python (Boto3)) - Amazon Personalize

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

入门(SDK适用于 Python (Boto3))

本教程向你展示了如何使用 for Python (Boto3) 从头到尾完成 Amazon P SDK ersonalize 工作流程。

完成入门练习后,为避免产生不必要的费用,请删除您创建的资源。有关更多信息,请参阅 删除 Amazon Personalize 资源的要求

先决条件

以下是使用本指南中的 Python 示例的先决条件步骤:

  • 完成入门先决条件,设置所需权限并创建训练数据。如果您使用自己的源数据,请确保按照先决条件设置数据格式。

  • 按照中的说明设置您的 AWS SDK for Python (Boto3) 环境设置 AWS SDKs

教程

在以下步骤中,您将验证您的环境并SDK为 Python (Boto3) 客户端创建 Amazon Personalize。然后,将导入数据,创建解决方案版本并通过市场活动进行部署,随后获得建议。

在完成先决条件之后,请运行以下 Python 示例,以确认您的环境已正确配置。此代码还会创建您在本教程中使用的 Amazon Personalize boto3 客户端。如果已正确配置环境,则会显示可用食谱列表,您现在可以运行本教程中的其他示例。

import boto3 personalizeRt = boto3.client('personalize-runtime') personalize = boto3.client('personalize') response = personalize.list_recipes() for recipe in response['recipes']: print (recipe)

创建 Amazon Personalize boto3 客户端并验证您的环境后,导入您在完成入门先决条件时创建的历史数据。要将历史数据导入 Amazon Personalize,请执行以下操作:

  1. 使用以下代码创建 Amazon Personalize 架构。将 getting-started-schema 替换为架构的名称。

    import json schema = { "type": "record", "name": "Interactions", "namespace": "com.amazonaws.personalize.schema", "fields": [ { "name": "USER_ID", "type": "string" }, { "name": "ITEM_ID", "type": "string" }, { "name": "TIMESTAMP", "type": "long" } ], "version": "1.0" } create_interactions_schema_response = personalize.create_schema( name='getting-started-schema', schema=json.dumps(schema) ) interactions_schema_arn = create_interactions_schema_response['schemaArn'] print(json.dumps(create_interactions_schema_response, indent=2))
  2. 使用以下代码创建数据集组。将 dataset group name 替换为数据集组的名称。

    response = personalize.create_dataset_group(name = 'dataset group name') dataset_group_arn = response['datasetGroupArn'] description = personalize.describe_dataset_group(datasetGroupArn = dataset_group_arn)['datasetGroup'] print('Name: ' + description['name']) print('ARN: ' + description['datasetGroupArn']) print('Status: ' + description['status'])
  3. 使用以下代码在新数据集组中创建物品交互数据集。为数据集命名,并提供前面步骤中的schema_arndataset_group_arn

    response = personalize.create_dataset( name = 'datase_name', schemaArn = 'schema_arn', datasetGroupArn = 'dataset_group_arn', datasetType = 'Interactions' ) dataset_arn = response['datasetArn']
  4. 使用以下代码通过数据集导入作业导入数据。代码使用 describe_dataset_import_job 方法来跟踪作业的状态。

    将以下内容作为参数传递:任务的名称、上一步dataset_arn中的名称、存储训练数据的 Amazon S3 存储桶路径 (s3://bucket name/folder name/ratings.csv) 以及您的IAM服务角色ARN。您在入门先决条件期间创建了此角色。Amazon Personalize 需要权限才能访问存储桶。请参阅 向 Amazon Personalize 授予访问 Amazon S3 资源的权限

    import time response = personalize.create_dataset_import_job( jobName = 'JobName', datasetArn = 'dataset_arn', dataSource = {'dataLocation':'s3://amzn-s3-demo-bucket/filename.csv'}, roleArn = 'role_arn', importMode = 'FULL' ) dataset_interactions_import_job_arn = response['datasetImportJobArn'] description = personalize.describe_dataset_import_job( datasetImportJobArn = dataset_interactions_import_job_arn)['datasetImportJob'] print('Name: ' + description['jobName']) print('ARN: ' + description['datasetImportJobArn']) print('Status: ' + description['status']) max_time = time.time() + 3*60*60 # 3 hours while time.time() < max_time: describe_dataset_import_job_response = personalize.describe_dataset_import_job( datasetImportJobArn = dataset_interactions_import_job_arn ) status = describe_dataset_import_job_response["datasetImportJob"]['status'] print("Interactions DatasetImportJob: {}".format(status)) if status == "ACTIVE" or status == "CREATE FAILED": break time.sleep(60)

导入数据后,创建解决方案和解决方案版本,如下所示。解决方案 包含用于训练模型的配置,解决方案版本 是经过训练的模型。

  1. 使用以下代码创建新解决方案。将以下内容作为参数传递:dataset_group_arn来自之前的、解决方案的名称以及用户个性化-v2 配方的 ()。ARN arn:aws:personalize:::recipe/aws-user-personalization-v2存储您的新解决方案以备日后使用。ARN

    create_solution_response = personalize.create_solution( name='solution name', recipeArn= 'arn:aws:personalize:::recipe/aws-user-personalization-v2', datasetGroupArn = 'dataset group arn' ) solution_arn = create_solution_response['solutionArn'] print('solution_arn: ', solution_arn)
  2. 使用以下代码创建解决方案版本。将上一步中的 solution_arn 作为参数传递。以下代码将创建解决方案版本。在训练期间,代码使用 DescribeSolutionVersion 操作来检索解决方案版本的状态。训练完成后,该方法将返回您的新解决方案版本的。ARN请将其存储以便将来使用。

    import time import json create_solution_version_response = personalize.create_solution_version( solutionArn = solution_arn ) solution_version_arn = create_solution_version_response['solutionVersionArn'] print(json.dumps(create_solution_version_response, indent=2)) max_time = time.time() + 3*60*60 # 3 hours while time.time() < max_time: describe_solution_version_response = personalize.describe_solution_version( solutionVersionArn = solution_version_arn ) status = describe_solution_version_response["solutionVersion"]["status"] print("SolutionVersion: {}".format(status)) if status == "ACTIVE" or status == "CREATE FAILED": break time.sleep(60)

创建解决方案版本后,使用 Amazon Personalize 市场活动进行部署。使用以下代码创建可部署解决方案版本的市场活动。将以下内容作为参数传递:solution_version_arn 和市场活动名称。该方法返回您的新活动的 Amazon 资源名称 (ARN)。请将其存储以便将来使用。

response = personalize.create_campaign( name = 'campaign name', solutionVersionArn = 'solution version arn' ) arn = response['campaignArn'] description = personalize.describe_campaign(campaignArn = arn)['campaign'] print('Name: ' + description['name']) print('ARN: ' + description['campaignArn']) print('Status: ' + description['status'])

创建活动之后,您可以使用它来获得建议。以下代码展示了如何从市场活动中获取建议并打印出每个推荐物品的 ID。传递您在ARN上一步中创建的广告系列的。对于用户 ID,传递来自训练数据的用户 ID,例如 123

response = personalizeRt.get_recommendations( campaignArn = 'Campaign ARN', userId = '123', numResults = 10 ) print("Recommended items") for item in response['itemList']: print (item['itemId'])

开始在 Jupyter () iPython 笔记本APIs上使用 Amazon Personalize

要开始通过 Jupyter 笔记本使用 Amazon Personalize,请克隆或下载在 Amazon Personalize 示例存储库的 getting_started 文件夹中找到的一系列笔记本。笔记本将引导您使用 Amazon Personalize 导入训练数据、创建解决方案、创建市场活动以及获取建议。

注意

在开始使用笔记本之前,请务必按照 README.m d 中的步骤构建您的环境