Introducción a un grupo de conjuntos de datos de dominio (SDK para Python (Boto3)) - Amazon Personalize

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Introducción a un grupo de conjuntos de datos de dominio (SDK para Python (Boto3))

En este tutorial, se muestra cómo utilizar el SDK para Python (Boto3) para crear un grupo de conjuntos de datos de dominio para el dominio VIDEO_ON_DEMAND. En este tutorial, se crea un recomendador para el caso de uso Mejores opciones.

Cuando termine el ejercicio de introducción, para evitar incurrir en cargos innecesarios, elimine los recursos que ha creado. Para obtener más información, consulte Requisitos para eliminar recursos de Amazon Personalize.

Requisitos previos

A continuación se indican los requisitos previos para utilizar los ejemplos de Python en esta guía:

Tutorial

En los siguientes pasos, verificará su entorno y creará clientes del SDK para Python (Boto3) para Amazon Personalize. A continuación, se importan los datos, se crea un recomendador para el caso de uso Mejores opciones y se obtienen recomendaciones.

Después de completar los requisitos previos, ejecute el siguiente ejemplo de Python para confirmar que su entorno está configurado correctamente. Este código también crea los clientes boto3 de Amazon Personalize que utiliza en este tutorial. Si su entorno está configurado correctamente, se muestra una lista de las recetas disponibles y puede ejecutar los demás ejemplos de este tutorial.

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

Tras crear los clientes boto3 de Amazon Personalize y verificar su entorno, importe los datos históricos que creó al completar los Requisitos previos para los ejercicios de introducción. Para importar datos históricos en Amazon Personalize, haga lo siguiente:

  1. Utilice el siguiente código para crear un esquema en Amazon Personalize. Sustituya gs-domain-interactions-schema por un nombre para el esquema.

    import json 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" } create_interactions_schema_response = personalize.create_schema( name='gs-domain-interactions-schema', schema=json.dumps(schema), domain='VIDEO_ON_DEMAND' ) interactions_schema_arn = create_interactions_schema_response['schemaArn'] print(json.dumps(create_interactions_schema_response, indent=2))
  2. Cree un grupo de conjuntos de datos con el siguiente código. Sustituya dataset group name por un nombre para el grupo de conjuntos de datos.

    response = personalize.create_dataset_group( name = 'dataset group name', domain = 'VIDEO_ON_DEMAND' ) 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'])
  3. Cree un conjunto de datos de interacciones de elementos en su nuevo grupo de conjuntos de datos con el siguiente código. Asigne un nombre al conjunto de datos y proporcione el schema_arn y dataset_group_arn de los pasos anteriores.

    response = personalize.create_dataset( name = 'interactions-dataset-name', schemaArn = interactions_schema_arn, datasetGroupArn = dsg_arn, datasetType = 'INTERACTIONS' ) dataset_arn = response['datasetArn']
  4. Importe sus datos con un trabajo de importación de conjuntos de datos con el siguiente código. El código usa el método describe_dataset_import_job para realizar un seguimiento del estado del trabajo.

    Pase lo siguiente como parámetros: un nombre para el trabajo, el dataset_arn del paso anterior, la ruta del bucket de Amazon S3 (s3://bucket name/folder name/ratings.csv) en la que almacenó los datos de entrenamiento y el ARN de su rol de servicio de IAM. Creó este rol como parte de los Requisitos previos para los ejercicios de introducción. Amazon Personalize necesita permiso para acceder al bucket. Para obtener información sobre la concesión del acceso, consulte Concesión de acceso a Amazon Personalize para los recursos de 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' ) 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)

Una vez finalizado el trabajo de importación del conjunto de datos, estará listo para crear un generador de recomendaciones. Utilice el siguiente código para crear un generador de recomendaciones. Pase lo siguiente como parámetros: un nombre para el generador de recomendaciones, el nombre de recurso de Amazon (ARN) de su grupo de conjuntos de datos y arn:aws:personalize:::recipe/aws-vod-top-picks para el ARN de la receta. El código usa el método describe_recommender para realizar un seguimiento del estado del generador de recomendaciones.

import time create_recommender_response = personalize.create_recommender( name = 'gs-python-top-picks', recipeArn = 'arn:aws:personalize:::recipe/aws-vod-top-picks', datasetGroupArn = dsg_arn ) recommender_arn = create_recommender_response['recommenderArn'] print('Recommender ARN:' + recommender_arn) max_time = time.time() + 3*60*60 # 3 hours while time.time() < max_time: version_response = personalize.describe_recommender( recommenderArn = recommender_arn ) status = version_response["recommender"]["status"] if status == "ACTIVE": print("Creation succeeded for {}".format(recommender_arn)) elif status == "CREATE FAILED": print("Creation failed for {}".format(recommender_arn)) if status == "ACTIVE": break else: print("Recommender creation is still in progress") time.sleep(60)

Tras crear un generador de recomendaciones, se utiliza para obtener recomendaciones con el siguiente código. Pase como parámetros el nombre de recurso de Amazon (ARN) del generador de recomendaciones que ha creado en el paso anterior y un ID de usuario (por ejemplo, 123). El método imprime la lista de elementos recomendados.

response = personalizeRt.get_recommendations( recommenderArn = "arn:aws:personalize:us-west-2:014025156336:recommender/gs-python-top-picks-89", userId = '123' ) print("Recommended items") for item in response['itemList']: print (item['itemId'])

Introducción al uso de las API de Amazon Personalize con los cuadernos de Jupyter (iPython)

Para empezar a crear grupos de conjuntos de datos de dominio con los cuadernos de Jupyter, clone o descargue una serie de libretas que se encuentran en la carpeta notebooks_managed_domains del repositorio de muestras de Amazon Personalize. Los cuadernos le guían por la importación de datos de entrenamiento, la creación de un generador de recomendaciones y la obtención de recomendaciones con Amazon Personalize.

nota

Antes de empezar con los cuadernos, asegúrese de crear su entorno siguiendo los pasos del archivo README.md