

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.

# Obtención de una clasificación personalizada (recursos personalizados)
<a name="rankings"></a>

Una clasificación personalizada es una lista de elementos recomendados que se vuelven a clasificar para un usuario específico. Para obtener clasificaciones personalizadas, llame a la operación de la API [GetPersonalizedRanking](API_RS_GetPersonalizedRanking.md) u obtenga recomendaciones a partir de una campaña en la consola.

**nota**  
La solución relacionada con la campaña se debe haber creado utilizando una receta del tipo PERSONALIZED\$1RANKING. Para obtener más información, consulte [Elección de una receta](working-with-predefined-recipes.md).

**Topics**
+ [Cómo funciona la puntuación de clasificación personalizada](#how-ranking-scoring-works)
+ [Obtención de una clasificación personalizada (consola)](get-ranking-recommendations-console.md)
+ [Obtención de una clasificación personalizada (AWS CLI)](get-personalized-rankings-cli.md)
+ [Obtención de una clasificación personalizada (SDK de AWS)](get-personalized-rankings-sdk.md)
+ [Cuaderno de ejemplo de Personalized-Ranking](#real-time-recommendations-personalized-ranking-example)

## Cómo funciona la puntuación de clasificación personalizada
<a name="how-ranking-scoring-works"></a>

Al igual que las puntuaciones que devuelve la operación `GetRecommendations` para las soluciones creadas con las recetas User-Personalization-v2 y User-Personalization, la suma de las puntuaciones de `GetPersonalizedRanking` es 1; sin embargo, solo los elementos de entrada reciben puntuaciones y las puntuaciones de recomendación suelen ser más altas. Si un objeto no estaba presente durante el último entrenamiento, recibe una puntuación de 0.

Matemáticamente, la función de puntuación para GetPersonalizedRanking es idéntica a `GetRecommendations`, excepto que solo considera los elementos de entrada. Esto significa que las puntuaciones más cercanas a 1 se vuelven más probables, ya que hay menos opciones entre las que dividir la puntuación:

![\[Representa la fórmula utilizada para calcular las puntuaciones de cada elemento de una clasificación.\]](http://docs.aws.amazon.com/es_es/personalize/latest/dg/images/get_personalized_ranking.png)


# Obtención de una clasificación personalizada (consola)
<a name="get-ranking-recommendations-console"></a>

Para obtener una clasificación personalizada para un usuario desde la consola de Amazon Personalize, elija la campaña que está utilizando y, a continuación, proporcione su ID de usuario, especifique la lista de elementos que desea clasificar para el usuario, elija un filtro y, si lo desea, proporcione cualquier dato de contexto. 

**Para obtener una clasificación personalizada para un usuario**

1. Abra la consola de Amazon Personalize en [https://console.aws.amazon.com/personalize/home](https://console.aws.amazon.com/personalize/home) e inicie sesión en su cuenta. 

1. Elija el grupo de conjuntos de datos que contiene la campaña que está usando.

1. En el panel de navegación, seleccione **Campañas**.

1. En la página **Campañas**, elija la campaña objetivo.

1.  En **Probar resultados de la campaña**, introduzca el **ID de usuario** para el que quiera recibir recomendaciones. 

1. En el **ID de elementos**, especifique la lista de elementos que se clasificarán para el usuario.

1. Si lo desea, elija un filtro. Para obtener más información, consulte [Recomendaciones de filtrado y segmentos de usuarios](filter.md). 

1. Si ha habilitado los metadatos en las recomendaciones para su campaña, en **Columnas de conjuntos de datos de elementos**, elija las columnas de metadatos que quiera incluir en los resultados de las recomendaciones. Para obtener más información acerca de cómo habilitar los metadatos, consulte [Metadatos de elemento en las recomendaciones](campaigns.md#create-campaign-return-metadata).

1. Si su campaña utiliza metadatos contextuales (para ver los requisitos, consulte [Aumento de la relevancia de las recomendaciones con metadatos contextuales](contextual-metadata.md)), si lo desea, proporcione datos contextuales. 

   Para cada contexto, para la **Clave**, especifique el campo de metadatos y, para el **Valor**, especifique los datos contextuales. 

1. Elija **Obtener clasificaciones de elementos personalizadas**. Aparece una tabla que contiene los elementos clasificados en orden de interés previsto para el usuario. 

# Obtención de una clasificación personalizada (AWS CLI)
<a name="get-personalized-rankings-cli"></a>

Los siguientes ejemplos de código muestran distintas variaciones de cómo obtener una clasificación personalizada con la AWS CLI.

**Topics**
+ [Obtención de una clasificación personalizada](#personalized-ranking-cli-sample)
+ [Incluir los metadatos de los elementos en una clasificación personalizada](#getting-personalized-ranking-with-metadata-cli)

## Obtención de una clasificación personalizada
<a name="personalized-ranking-cli-sample"></a>

 Utilice el siguiente comando `get-personalized-ranking` para obtener una clasificación personalizada con el AWS CLI. Especifique el nombre de recurso de Amazon (ARN) de su campaña, el ID de usuario, y proporcione una lista de los ID de elementos que se clasificarán para el usuario (cada uno separado por un espacio). Los elementos que se clasificarán deben estar en los datos que utilizó para preparar la versión de la solución. Se muestra una lista de recomendaciones clasificadas. Amazon Personalize considera el primer elemento de la lista que más interesa al usuario. 

```
aws personalize-runtime get-personalized-ranking \
--campaign-arn Campaign ARN \
--user-id 12 \
--input-list 3 4 10 8 12 7
```

## Incluir los metadatos de los elementos en una clasificación personalizada
<a name="getting-personalized-ranking-with-metadata-cli"></a>

Si ha habilitado los metadatos en las recomendaciones para su campaña, puede especificar las columnas de metadatos del conjunto de datos de elementos para incluirlas en la respuesta. Para obtener más información acerca de cómo habilitar los metadatos, consulte [Metadatos de elemento en las recomendaciones](campaigns.md#create-campaign-return-metadata).

En el siguiente ejemplo de código se muestra cómo especificar las columnas de metadatos como parte de la solicitud de una clasificación personalizada.

```
aws personalize-runtime get-personalized-ranking \
--campaign-arn Campaign ARN \
--user-id 12 \
--input-list 3 4 10 8 12 7
--metadata-columns "{\"ITEMS\": ["\"columnNameA"\","\"columnNameB"\"]}"
```

# Obtención de una clasificación personalizada (SDK de AWS)
<a name="get-personalized-rankings-sdk"></a>

Los siguientes ejemplos de código muestran las diferentes variaciones de cómo obtener una clasificación personalizada con los SDK de AWS.

**Topics**
+ [Obtención de una clasificación personalizada](#personalized-ranking-sdk-sample)
+ [Incluir los metadatos de los elementos en una clasificación personalizada](#getting-personalized-ranking-with-metadata-sdk)
+ [Obtención de una clasificación personalizada con metadatos contextuales](#personalized-ranking-contextual-metadata-example)

## Obtención de una clasificación personalizada
<a name="personalized-ranking-sdk-sample"></a>

El siguiente código muestra cómo obtener una clasificación personalizada para un usuario. Especifique el ID del usuario y una lista de los ID de los elementos que se clasificarán para el usuario. Los ID de los elementos deben estar en los datos que utilizó para entrenar la versión de la solución. Se devuelve una lista de recomendaciones clasificadas. Amazon Personalize considera el primer elemento de la lista que más interesa al usuario.

------
#### [ SDK for Python (Boto3) ]

```
import boto3

personalizeRt = boto3.client('personalize-runtime')

response = personalizeRt.get_personalized_ranking(
    campaignArn = "Campaign arn",
    userId = "UserID",
    inputList = ['ItemID1','ItemID2']
)

print("Personalized Ranking")
for item in response['personalizedRanking']:
    print (item['itemId'])
```

------
#### [ SDK for Java 2.x ]

```
public static List<PredictedItem> getRankedRecs(PersonalizeRuntimeClient personalizeRuntimeClient,
                                                String campaignArn,
                                                String userId,
                                                ArrayList<String> items) {

    try {
        GetPersonalizedRankingRequest rankingRecommendationsRequest = GetPersonalizedRankingRequest.builder()
                .campaignArn(campaignArn)
                .userId(userId)
                .inputList(items)
                .build();
  
        GetPersonalizedRankingResponse recommendationsResponse =
                personalizeRuntimeClient.getPersonalizedRanking(rankingRecommendationsRequest);
        List<PredictedItem> rankedItems = recommendationsResponse.personalizedRanking();
        int rank = 1;
        for (PredictedItem item : rankedItems) {
            System.out.println("Item ranked at position " + rank + " details");
            System.out.println("Item Id is : " + item.itemId());
            System.out.println("Item score is : " + item.score());
            System.out.println("---------------------------------------------");
            rank++;
        }
        return rankedItems;
    } catch (PersonalizeRuntimeException e) {
        System.err.println(e.awsErrorDetails().errorMessage());
        System.exit(1);
    }
    return null;
}
```

------
#### [ SDK for JavaScript v3 ]

```
// Get service clients module and commands using ES6 syntax.
import { GetPersonalizedRankingCommand } from "@aws-sdk/client-personalize-runtime";
import { personalizeRuntimeClient } from "./libs/personalizeClients.js";
// Or, create the client here.
// const personalizeRuntimeClient = new PersonalizeRuntimeClient({ region: "REGION"});

// Set the ranking request parameters.
export const getPersonalizedRankingParam = {
  campaignArn: "CAMPAIGN_ARN" /* required */,
  userId: "USER_ID" /* required */,
  inputList: ["ITEM_ID_1", "ITEM_ID_2", "ITEM_ID_3", "ITEM_ID_4"],
};

export const run = async () => {
  try {
    const response = await personalizeRuntimeClient.send(
      new GetPersonalizedRankingCommand(getPersonalizedRankingParam),
    );
    console.log("Success!", response);
    return response; // For unit tests.
  } catch (err) {
    console.log("Error", err);
  }
};
run();
```

------

## Incluir los metadatos de los elementos en una clasificación personalizada
<a name="getting-personalized-ranking-with-metadata-sdk"></a>

Si ha habilitado los metadatos en las recomendaciones para su campaña, puede especificar las columnas de metadatos del conjunto de datos de elementos para incluirlas en la respuesta. Para obtener más información acerca de cómo habilitar los metadatos, consulte [Metadatos de elemento en las recomendaciones](campaigns.md#create-campaign-return-metadata).

En el siguiente ejemplo de código se muestra cómo especificar las columnas de metadatos como parte de la solicitud de una clasificación personalizada.

```
import boto3

personalizeRt = boto3.client('personalize-runtime')

response = personalizeRt.get_personalized_ranking(
    campaignArn = "Campaign arn",
    userId = "UserID",
    inputList = ['ItemID1','ItemID2'],
    metadataColumns = {
      "ITEMS": ['columnNameA','columnNameB']
    }
)

print("Personalized Ranking")
for item in response['personalizedRanking']:
    print (item['itemId'])
    print (item['metadata'])
```

## Obtención de una clasificación personalizada con metadatos contextuales
<a name="personalized-ranking-contextual-metadata-example"></a>

Utilice el siguiente código para obtener una clasificación personalizada basada en metadatos contextuales. Para `context`, para cada par clave-valor, proporcione el campo de metadatos como la clave y los datos contextuales como el valor. En el siguiente código de ejemplo, la clave es `DEVICE` y el valor es `mobile phone`. Sustituya estos valores y el `Campaign ARN` y `User ID` por los suyos propios. Cambie también el valor de `inputList` por una lista de ID de elementos que se encuentren en los datos que utilizó para entrenar la solución. Amazon Personalize considera el primer elemento de la lista que más interesa al usuario.

```
import boto3

personalizeRt = boto3.client('personalize-runtime')

response = personalizeRt.get_personalized_ranking(
    campaignArn = "Campaign ARN",
    userId = "User ID",
    inputList = ['ItemID1', 'ItemID2'],
    context = {
      'DEVICE': 'mobile phone'
    }
)

print("Personalized Ranking")
for item in response['personalizedRanking']:
  print(item['itemId'])
```

## Cuaderno de ejemplo de Personalized-Ranking
<a name="real-time-recommendations-personalized-ranking-example"></a>

 Para ver una muestra de cuaderno de Jupyter que describe el uso de la receta Personalized-Ranking, consulte el [ejemplo de Personalize Ranking](https://github.com/aws-samples/amazon-personalize-samples/blob/master/next_steps/core_use_cases/personalized_ranking/personalize_ranking_example.ipynb). 