创建数据集和架构 - Amazon Personalize

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

创建数据集和架构

完成步骤 1:创建数据集组后,就可以创建数据集了。数据集 是 Amazon Personalize 的数据容器。创建数据集时,还可以为该数据集创建架构。架构 会将您的数据结构告知给 Amazon Personalize,并允许 Amazon Personalize 解析数据。

您可以使用 Amazon Personalize 控制台、 AWS Command Line Interface (AWS CLI) 或 AWS 软件开发工具包创建数据集。您无法在域数据集组中创建次佳操作资源,包括操作和操作交互数据集。有关不同类型的数据集以及数据集和架构要求的信息,请参阅数据集和架构

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

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

有关 Amazon Personalize 数据集和架构要求的信息,请参阅数据集和架构

注意

如果您刚完成步骤 1:创建数据集组并且已经在创建数据集,请跳至此过程中的步骤 4。

创建数据集和架构
  1. 打开 Amazon Personalize 控制台(网址为 https://console.aws.amazon.com/personalize/home),并登录您的账户。

  2. 数据集组页面上,选择您在步骤 1:创建数据集组中创建的数据集组。

  3. 设置数据集中,选择创建数据集并选择要创建的数据集类型。

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

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

  6. 架构详细信息中,对于架构选择,选择现有架构,或选择创建新架构

  7. 如果您要创建新架构,则对于架构定义,粘贴与您的数据匹配的架构 JSON。使用架构中的示例作为指导。创建架构后,您无法更改架构。

  8. 对于新架构名称,为新架构指定一个名称。

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

  10. 选择下一步,然后按照准备和导入批量数据中的说明导入数据。

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

要使用创建数据集和架构 AWS CLI,您需要先定义 Avro 格式的架构,然后使用CreateSchema操作将其添加到 A mazon Personalize 中。随后,使用 CreateDataset 操作创建数据集。有关 Amazon Personalize 数据集和架构要求的信息,请参阅数据集和架构

创建架构和数据集
  1. 创建一个 Avro 格式的架构文件并将其另存为 JSON 文件。此文件应基于您要创建的数据集类型,例如交互。

    架构必须与您的数据中的列匹配,且架构 name 必须与 Amazon Personalize 识别的其中一个数据集类型相匹配。以下是最小物品交互数据集架构的示例。有关更多示例,请参阅架构

    { "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" }
  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. 通过运行以下命令来创建一个空数据集。提供来自创建数据集组 (AWS CLI) 的数据集组 Amazon 资源名称 (ARN) 和来自上一步的架构 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 以备后用。创建数据集后,就可以导入训练数据了。请参阅 准备和导入批量数据

创建数据集和架构 (AWS SDK)

要使用 AWS 软件开发工具包创建数据集和架构,您需要先定义 Avro 格式的架构,然后使用操作将其添加到 A mazon Personalize 中。CreateSchema创建架构后,您无法更改架构。随后,使用 CreateDataset 操作创建数据集。有关 Amazon Personalize 数据集和架构要求的信息,请参阅数据集和架构

创建架构和数据集
  1. 创建一个 Avro 格式的架构文件,并将其另存为 JSON 文件以保存到您的工作目录中。

    架构必须与您的数据中的列匹配,且架构 name 必须与 Amazon Personalize 识别的其中一个数据集类型相匹配。以下是最小物品交互数据集架构的示例。有关更多示例,请参阅架构

    { "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" }
  2. 使用以下代码创建架构。为架构指定名称,为架构 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 'fs'; let 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。有关不同类型数据集的信息,请参阅数据集和架构

    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();

    创建数据集后,就可以导入训练数据了。请参阅 准备和导入批量数据