创建域数据集组并导入交互数据 (Amazon开发工具包) - Amazon Personalize
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

创建域数据集组并导入交互数据 (Amazon开发工具包)

创建域数据集组时,您可以选择域、创建架构和交互数据集,然后导入历史数据。如果您没有历史数据,可以选择以后以递增方式记录交互数据。

创建交互数据集时,可以为域的每个数据集使用默认架构,也可以对其进行自定义以创建自己的架构。架构允许 Amazon Personalize 化读取您的数据。使用字段及其类型作为指南,以确定要导入 Amazon Personalize 化的数据。有关默认架构的更多信息,请参阅域数据集和架构.

第 1 步:创建 Domain 数据集组。

使用以下代码创建域数据集组并使用 SDK for Python (Boto3) 选择您的域。对于域,请指定ECOMMERCE要么VIDEO_ON_DEMAND.

import boto3 personalize = boto3.client('personalize') response = personalize.create_dataset_group( name = 'dataset group name' domain = 'business domain' ) dsg_arn = response['datasetGroupArn'] description = personalize.describe_dataset_group(datasetGroupArn = dsg_arn)['datasetGroup'] print('Name: ' + description['name']) print('ARN: ' + description['datasetGroupArn']) print('Status: ' + description['status'])

第 2 步:创建架构和交互数据集

完成后,第 1 步:创建 Domain 数据集组。中,创建架构和交互数据集以存储来自用户与目录中项目之间交互的数据。

创建架构和交互数据集

  1. 以 Avro 格式创建架构文件,然后将其保存为 JSON 文件在工作目录中。

    模式必须与数据中的列和架构匹配name必须是Interactions. 以下 SDK for Python (Boto3) 代码将 VIDEO_ON_DEMAND 域的默认交互模式分配给interaction_schema变量。有关更多信息,请参阅域数据集和架构

    interaction_schema = { "type": "record", "name": "Interactions", "namespace": "com.amazonaws.personalize.schema", "fields": [ { "name": "USER_ID", "type": "string" }, { "name": "ITEM_ID", "type": "string" }, { "name": "EVENT_TYPE", "type": "string" }, { "name": "TIMESTAMP", "type": "long" } ], "version": "1.0" }
  2. 使用CreateSchemaAPI 操作。为模式命名并替换business domain或者VIDEO_ON_DEMAND要么ECOMMERCE.

    import boto3 personalize = boto3.client('personalize') createSchemaResponse = personalize.create_schema( domain = 'business domain' name = 'schema name', schema = json.dumps(interaction_schema) ) schema_arn = createSchemaResponse['schemaArn'] print('Schema ARN:' + schema_arn )

    Amazon Personalize ate (Amazon Persation) 返回新架构的 ARN。记录下来,因为您在下一个步骤中需要使用该值。

  3. 使用CreateDatasetoperation. 有关不同类型的域数据集的更多信息,请参阅域数据集和架构.

    请使用以下create_dataset方法来创建交互数据集。为数据集指定名称并指定datasetGroupArn返回第 1 步:创建 Domain 数据集组。. 使用schemaArn在上一步中创建的。

    import boto3 personalize = boto3.client('personalize') response = personalize.create_dataset( name = 'datase_name', schemaArn = 'schema_arn', datasetGroupArn = 'dataset_group_arn', datasetType = 'INTERACTIONS' ) interaction_dataset_arn = response['datasetArn'] print ('Dataset Arn: ' + response['datasetArn'])

    创建数据集后,您就可以导入数据了。请参阅第 3 步:导入交互数据

第 3 步:导入交互数据

完成后,第 2 步:创建架构和交互数据集,你已准备好导入数据了。如果您在 Amazon S3 中有数据,请使用数据集导入任务导入数据来导入数据。如果您只想以增量方式导入交互数据,可以跳过此步骤,而是使用PutEvents操作,直到您至少有 1000 个合并的历史和增量交互。有关更多信息,请参阅记录事件.

下面的代码介绍了如何使用 SDK for Python (Boto3) 导入批量数据。指定datasetGroupArn对于您的域数据集组,然后设置dataLocation转到您存储训练数据的 Amazon S3 存储桶的路径。

对于roleArn中,指定Amazon Identity and Access Management(IAM) 角色,向 Amazon 提供访问 S3 存储桶的 Amazon 个性化权限。请参阅为 Amazon Personalize 创建 IAM 服务角色

import boto3 personalize = boto3.client('personalize') response = personalize.create_dataset_import_job( jobName = 'YourImportJob', datasetArn = 'dataset_arn', dataSource = {'dataLocation':'s3://bucket/file.csv'}, roleArn = 'role_arn' ) dsij_arn = response['datasetImportJobArn'] print ('Dataset Import Job arn: ' + dsij_arn) description = personalize.describe_dataset_import_job( datasetImportJobArn = dsij_arn)['datasetImportJob'] print('Name: ' + description['jobName']) print('ARN: ' + description['datasetImportJobArn']) print('Status: ' + description['status'])