创建架构和数据集 - Amazon Personalize
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

创建架构和数据集

创建数据集组后,就可以为要导入的每种数据类型创建 Amazon Personalize 架构和数据集了。架构 会将您的数据结构告知给 Amazon Personalize,并允许 Amazon Personalize 解析数据。当你在 Amazon Personalize 中创建架构时,你使用JSON的是你在中创建的文件为 Amazon Personalize 架构创建架构 JSON 文件

数据集是 Amazon Personalize 中用于训练数据的容器。不同的数据集类型有不同的要求。您可以为要导入的每种数据类型创建一个数据集。有关不同类型数据集以及如何准备数据的信息,请参阅为 Amazon Personalize 准备训练数据

您可以使用 Amazon Personalize 控制台创建架构和数据集, Amazon Command Line Interface (Amazon CLI) 或 Amazon SDKs。您无法在域数据集组中创建下一个最佳操作资源,包括操作和操作交互数据集。

重要

创建架构后,您无法更改架构。但如果要添加新列,则可以将数据集的架构替换为新架构。有关更多信息,请参阅 替换数据集的架构,以便添加新列

创建数据集和架构(控制台)

如果这是您的数据集组中的第一个数据集,则您的第一个数据集类型将是物品交互数据集。要在控制台中创建 Item intersactions 数据集,请指定数据集名称,然后以 Avro 格式指定JSON架构。如果这不是您在此数据集组中的第一个数据集,请选择数据集类型,然后指定名称和架构。

有关 Amazon Personalize 数据集要求的信息,请参阅为 Amazon Personalize 准备训练数据。如果您刚完成创建 Amazon Personalize 数据集组并且已经在创建数据集,请跳至此过程中的步骤 4。

创建数据集和架构
  1. 如果您还没有,请为 Amazon Personalize 架构创建架构 JSON 文件按照中的说明创建概述数据的架构JSON文件。

  2. https://console.aws.amazon.com/personalize/家中打开 Amazon Personalize 控制台并登录您的账户。

  3. 数据集组页面上,选择您在创建 Amazon Personalize 数据集组中创建的数据集组。

  4. 步骤 1. 创建数据集和导入数据中,选择创建数据集,然后选择要创建的数据集类型。

  5. 选择将数据直接导入 Amazon Personalize 数据集,然后选择下一步

  6. 数据集详细信息中,对于数据集名称,为您的数据集指定名称。

  7. 对于数据集架构,选择创建新架构使用现有架构

  8. 如果您使用的是现有架构,请选择要使用的现有架构。如果要创建新架构,请为架构命名并粘贴与您的数据JSON匹配的架构。您在为 Amazon Personalize 架构创建架构 JSON 文件中创建了此文件。

  9. 对于标签,可以选择添加任何标签。有关标记 Amazon Personalize 资源的更多信息,请参阅为 Amazon Personalize 资源添加标签

  10. 选择下一步,然后按照将训练数据导入 Amazon Personalize 数据集中的说明导入数据。

创建数据集和架构 (Amazon CLI)

要使用创建数据集和架构 Amazon CLI,请使用create-schema命令(使用CreateSchemaAPI操作),然后使用命令create-dataset(使用CreateDatasetAPI操作)。

创建架构和数据集
  1. 如果您还没有,请为 Amazon Personalize 架构创建架构 JSON 文件按照中的说明创建概述数据的架构JSON文件。

  2. 通过运行以下命令在 Amazon Personalize 中创建架构。创建架构后,您无法更改架构。schemaName替换为架构的名称,然后file://SchemaName.json替换为JSON文件的位置。此示例将该文件显示为属于当前文件夹。如果要为域数据集组中的数据集创建架构,则添加 domain 参数并将其设置为 ECOMMERCEVIDEO_ON_DEMAND。有关 API 的更多信息,请参阅 CreateSchema

    aws personalize create-schema \ --name SchemaName \ --schema file://SchemaName.json

    将显示架构 Amazon 资源名称 (ARN),如以下示例所示:

    { "schemaArn": "arn:aws:personalize:us-west-2:acct-id:schema/SchemaName" }
  3. 通过运行以下命令来创建一个空数据集。提供来自上一步的数据集组 Amazon 资源名称 (ARN) 创建数据集组 (Amazon CLI) 和架构ARN。数据集类型值可以是 InteractionsUsersItemsActionsAction_Interactions。有关 API 的更多信息,请参阅 CreateDataset

    aws personalize create-dataset \ --name Dataset Name \ --dataset-group-arn Dataset Group ARN \ --dataset-type Dataset Type \ --schema-arn Schema Arn

    将显示ARN数据集,如以下示例所示。

    { "datasetArn": "arn:aws:personalize:us-west-2:acct-id:dataset/DatasetName/INTERACTIONS" }
  4. 记录数据集ARN以备后用。创建数据集后,就可以导入训练数据了。请参阅 将训练数据导入 Amazon Personalize 数据集

创建数据集和架构 (Amazon SDKs)

要使用创建数据集和架构 Amazon SDKs,您需要先定义 Avro 格式的架构,然后使用CreateSchema操作将其添加到 A mazon Personalize 中。创建架构后,您无法更改架构。随后,使用 CreateDataset 操作创建数据集。

创建架构和数据集
  1. 如果您还没有,请为 Amazon Personalize 架构创建架构 JSON 文件按照中的说明创建概述数据的架构JSON文件。

  2. 使用以下代码在 Amazon Personalize 中创建架构。为您的架构指定名称和架构文件的文件路径。JSON如果要为域数据集组中的数据集创建架构,则添加 domain 参数并将其设置为 ECOMMERCEVIDEO_ON_DEMAND。有关 API 的更多信息,请参阅 CreateSchema

    SDK for Python (Boto3)
    import boto3 personalize = boto3.client('personalize') with open('schemaFile.json') as f: createSchemaResponse = personalize.create_schema( name = 'schema name', schema = f.read() ) schema_arn = createSchemaResponse['schemaArn'] print('Schema ARN:' + schema_arn )
    SDK for Java 2.x
    public static String createSchema(PersonalizeClient personalizeClient, String schemaName, String filePath) { String schema = null; try { schema = new String(Files.readAllBytes(Paths.get(filePath))); } catch (IOException e) { System.out.println(e.getMessage()); } try { CreateSchemaRequest createSchemaRequest = CreateSchemaRequest.builder() .name(schemaName) .schema(schema) .build(); String schemaArn = personalizeClient.createSchema(createSchemaRequest).schemaArn(); System.out.println("Schema arn: " + schemaArn); return schemaArn; } catch(PersonalizeException e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } return ""; }
    SDK for JavaScript v3
    // Get service clients module and commands using ES6 syntax. import { CreateSchemaCommand } from "@aws-sdk/client-personalize"; import { personalizeClient } from "./libs/personalizeClients.js"; // Or, create the client here. // const personalizeClient = new PersonalizeClient({ region: "REGION"}); import fs from "node:fs"; const schemaFilePath = "SCHEMA_PATH"; let mySchema = ""; try { mySchema = fs.readFileSync(schemaFilePath).toString(); } catch (err) { mySchema = "TEST"; // For unit tests. } // Set the schema parameters. export const createSchemaParam = { name: "NAME" /* required */, schema: mySchema /* required */, }; export const run = async () => { try { const response = await personalizeClient.send( new CreateSchemaCommand(createSchemaParam), ); console.log("Success", response); return response; // For unit tests. } catch (err) { console.log("Error", err); } }; run();

    Amazon Personalize 会返回新架构ARN的架构。记录该 ARN,因为需要在下一步中使用。

  3. 使用 CreateDataset 操作创建数据集。以下代码展示了如何创建数据集。指定数据集组的 Amazon 资源名称 (ARN)、上一步ARN中的架构,并指定数据集类型。数据集类型值可以是 InteractionsUsersItemsActionsAction_Interactions。有关不同类型数据集的信息,请参阅为 Amazon Personalize 准备训练数据

    SDK for Python (Boto3)
    import boto3 personalize = boto3.client('personalize') response = personalize.create_dataset( name = 'dataset_name', schemaArn = 'schema_arn', datasetGroupArn = 'dataset_group_arn', datasetType = 'dataset_type' ) print ('Dataset Arn: ' + response['datasetArn'])
    SDK for Java 2.x
    public static String createDataset(PersonalizeClient personalizeClient, String datasetName, String datasetGroupArn, String datasetType, String schemaArn) { try { CreateDatasetRequest request = CreateDatasetRequest.builder() .name(datasetName) .datasetGroupArn(datasetGroupArn) .datasetType(datasetType) .schemaArn(schemaArn).build(); String datasetArn = personalizeClient.createDataset(request).datasetArn(); System.out.println("Dataset " + datasetName + " created. Dataset ARN: " + datasetArn); return datasetArn; } catch(PersonalizeException e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } return ""; }
    SDK for JavaScript v3
    // Get service clients module and commands using ES6 syntax. import { CreateDatasetCommand } from "@aws-sdk/client-personalize"; import { personalizeClient } from "./libs/personalizeClients.js"; // Or, create the client here. // const personalizeClient = new PersonalizeClient({ region: "REGION"}); // Set the dataset's parameters. export const createDatasetParam = { datasetGroupArn: "DATASET_GROUP_ARN" /* required */, datasetType: "DATASET_TYPE" /* required */, name: "NAME" /* required */, schemaArn: "SCHEMA_ARN" /* required */, }; export const run = async () => { try { const response = await personalizeClient.send( new CreateDatasetCommand(createDatasetParam), ); console.log("Success", response); return response; // For unit tests. } catch (err) { console.log("Error", err); } }; run();

    创建数据集后,就可以导入训练数据了。请参阅 将训练数据导入 Amazon Personalize 数据集