Asociar los resultados de la predicción con registros de entrada - Amazon SageMaker

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.

Asociar los resultados de la predicción con registros de entrada

Al hacer predicciones sobre un conjunto de datos de gran tamaño, podrá excluir los atributos que no sean necesarios para la predicción. Una vez que se hayan hecho las predicciones, podrá asociar algunos de los atributos excluidos con esas predicciones o con los datos de entrada del informe. Al usar la transformación por lotes para seguir estos pasos de procesamiento de datos, a menudo podrá eliminar el procesamiento previo o posterior adicional. Solo puede utilizar archivos de entrada en CSV formato JSON y formato.

Flujo de trabajo de asociación de inferencias a registros de entrada

En el siguiente diagrama se muestra el flujo de trabajo de asociación de inferencias a registros de entrada.

El flujo de trabajo para asociar inferencias con registros de entrada.

Para asociar inferencias a datos de entrada, existen tres pasos principales:

  1. Filtre los datos de entrada que no sean necesarios para la inferencia antes de transferirlos al trabajo de transformación por lotes. Use el parámetro InputFilter para determinar qué atributos se deben usar como entrada para el modelo.

  2. Asocie los datos de entrada con los resultados de la inferencia. Use el parámetro JoinSource para combinar los datos de entrada con la inferencia.

  3. Filtre los datos unidos a fin de conservar las entradas necesarias para proporcionar contexto para la interpretación de las predicciones en los informes. Use OutputFilter para almacenar la parte especificada del conjunto de datos unido en el archivo de salida.

Uso del procesamiento de datos en los trabajos de transformación por lotes

Al crear un trabajo de transformación por lotes con CreateTransformJob para procesar datos:

  1. Especifique la parte de la entrada que se va a transferir al modelo con el parámetro InputFilter en la estructura de datos DataProcessing.

  2. Una los datos de entrada sin procesar con los datos transformados con el parámetro JoinSource.

  3. Especifique qué parte de los datos transformados y de entrada unidos del trabajo de transformación por lotes se va a incluir en el archivo de salida con el parámetro OutputFilter.

  4. Elija archivos con CSV formato JSON - o -para la entrada:

    • Para los JSON archivos de entrada JSON con formato de líneas o con formato de líneas, SageMaker añade el SageMakerOutput atributo al archivo de entrada o crea un nuevo archivo de JSON salida con los atributos y. SageMakerInput SageMakerOutput Para obtener más información, consulte DataProcessing.

    • En el CSV caso de los archivos de entrada con formato, los datos de entrada unidos van seguidos de los datos transformados y la salida es un archivo. CSV

Si usa un algoritmo con la estructura DataProcessing, debe admitir su formato elegido tanto para los archivos de entrada como para los de salida. Por ejemplo, con el TransformOutputcampo CreateTransformJobAPI, debe establecer Acceptlos parámetros ContentTypey en uno de los siguientes valores:text/csv,application/json, o. application/jsonlines La sintaxis para especificar las columnas de un CSV archivo y especificar los atributos de un JSON archivo es diferente. El uso de la sintaxis incorrecta provoca un error. Para obtener más información, consulte Ejemplos de transformación por lotes. Para obtener más información acerca de los formatos de archivo de entrada y salida para los algoritmos integrados, consulte Usa algoritmos SageMaker integrados o modelos previamente entrenados de Amazon.

Los delimitadores de registro para la entrada y la salida también deben ser consistentes con su entrada de archivo elegida. El parámetro SplitType indica cómo dividir los registros en el conjunto de datos de entrada. El parámetro AssembleWith indica cómo volver a ensamblar los registros para la salida. Si establece formatos de entrada y salida en text/csv, también deberá establecer los parámetros SplitType y AssembleWith en line. Si define los formatos de entrada y salida en application/jsonlines, podrá establecer SplitType y AssembleWith en line.

En el CSV caso de los archivos, no puede utilizar caracteres de nueva línea incrustados. En el JSON caso de los archivos, el nombre del atributo SageMakerOutput está reservado para la salida. El archivo JSON de entrada no puede tener un atributo con este nombre. Si lo tiene, los datos del archivo de entrada podrían sobrescribirse.

JSONPathOperadores compatibles

Para filtrar y unir los datos de entrada y la inferencia, utilice una JSONPath subexpresión. SageMaker solo admite un subconjunto de los operadores definidos. JSONPath En la siguiente tabla se enumeran los JSONPath operadores admitidos. En el caso de CSV los datos, cada fila se toma como una JSON matriz, por lo que solo se JSONPaths puede aplicar en función de índices$[0], por ejemplo$[1:]. CSVlos datos también deben seguir el RFCformato.

JSONPathOperador Descripción Ejemplo
$

El elemento raíz para una consulta. Este operador es necesario al principio de todas las expresiones de ruta.

$
.<name>

Un elemento secundario con notación de puntos.

$.id

*

Un comodín. Úselo en lugar de un nombre de atributo o valor numérico.

$.id.*

['<name>' (,'<name>')]

Un elemento con notación de corchete o varios elementos secundarios.

$['id','SageMakerOutput']

[<number> (,<number>)]

Un índice o una matriz de índices. También se admiten valores de índice negativos. Un índice -1 hace referencia al último elemento de una matriz.

$[1] , $[1,3,5]

[<start>:<end>]

Un operador Slice de la matriz. El método Slice() de la matriz extrae una sección de una matriz y devuelve una nueva matriz. Si omite <start>, SageMaker usa el primer elemento de la matriz. Si omite <end>, SageMaker usa el último elemento de la matriz.

$[2:5], $[:5], $[2:]

Cuando se utiliza la notación de corchetes para especificar varios elementos secundarios de un campo determinado, no se permite el anidamiento adicional de elementos secundarios dentro de los corchetes. Por ejemplo, $.field1.['child1','child2'] sí se admite, pero $.field1.['child1','child2.grandchild'] no.

Para obtener más información sobre JSONPath los operadores, consulte JsonPath GitHub.

Ejemplos de transformación por lotes

En los siguientes ejemplos se muestran algunas formas habituales de unir los datos de entrada con los resultados de la predicción.

Ejemplo: generación de inferencias solamente

De forma predeterminada, el parámetro DataProcessing no une los resultados de la inferencia con la entrada. Solo genera los resultados de la inferencia.

Si desea especificar de forma explícita que no se deben unir los resultados con la entrada, utilice Amazon SageMaker Python SDK y especifique los siguientes ajustes en una llamada a un transformador.

sm_transformer = sagemaker.transformer.Transformer(…) sm_transformer.transform(…, input_filter="$", join_source= "None", output_filter="$")

Para generar inferencias mediante el AWS SDKpara Python, añade el siguiente código a tu CreateTransformJob solicitud. El siguiente código imita el comportamiento predeterminado.

{ "DataProcessing": { "InputFilter": "$", "JoinSource": "None", "OutputFilter": "$" } }

Ejemplo: inferencias de salida unidas a datos de entrada

Si utiliza Amazon SageMaker Python SDK para combinar los datos de entrada con las inferencias del archivo de salida, especifique los accept parámetros assemble_with y al inicializar el objeto transformador. Cuando utilice la llamada de transformación, especifique Input para el parámetro join_source y especifique también los parámetros split_type y content_type. El parámetro split_type debe tener el mismo valor que assemble_with, y el parámetro content_type debe tener el mismo valor que accept. Para obtener más información sobre los parámetros y sus valores aceptados, consulte la página Transformer en Amazon SageMaker Python SDK.

sm_transformer = sagemaker.transformer.Transformer(…, assemble_with="Line", accept="text/csv") sm_transformer.transform(…, join_source="Input", split_type="Line", content_type="text/csv")

Si está utilizando el AWS SDKpara Python (Boto 3), une todos los datos de entrada con la inferencia añadiendo el siguiente código a tu CreateTransformJobsolicitud. Los valores de Accept y ContentType deben coincidir, y los valores de AssembleWith y SplitType también deben coincidir.

{ "DataProcessing": { "JoinSource": "Input" }, "TransformOutput": { "Accept": "text/csv", "AssembleWith": "Line" }, "TransformInput": { "ContentType": "text/csv", "SplitType": "Line" } }

En el JSON caso de los archivos de entrada de o JSON Lines, los resultados se encuentran en la SageMakerOutput clave del archivo de entradaJSON. Por ejemplo, si la entrada es un JSON archivo que contiene el par clave-valor{"key":1}, el resultado de la transformación de datos podría serlo. {"label":1}

SageMakeralmacena ambos en el archivo de entrada de la SageMakerInput clave.

{ "key":1, "SageMakerOutput":{"label":1} }
nota

El resultado combinado JSON debe ser un objeto de par clave-valor. Si la entrada no es un objeto de par clave-valor, SageMaker crea un archivo nuevo. JSON En el nuevo JSON archivo, los datos de entrada se almacenan en la SageMakerInput clave y los resultados se almacenan como el SageMakerOutput valor.

En el caso de un CSV archivo, por ejemplo, si el registro es [1,2,3] y el resultado de la etiqueta es[1], el archivo de salida contendrá los siguientes elementos[1,2,3,1].

Ejemplo: las inferencias de salida se unen con los datos de entrada y se excluye la columna ID de la entrada () CSV

Si utiliza Amazon SageMaker Python SDK para unir los datos de entrada con la salida de la inferencia y, al mismo tiempo, excluye una columna de ID de la entrada del transformador, especifique los mismos parámetros del ejemplo anterior, así como una JSONPath subexpresión para la llamada input_filter in your transformer. Por ejemplo, si en sus datos de entrada se incluyen cinco columnas y la primera es la columna ID, use la siguiente solicitud del transformador para seleccionar todas las columnas excepto la columna ID como características. El transformador sigue emitiendo todas las columnas de entrada unidas a las inferencias. Para obtener más información sobre los parámetros y sus valores aceptados, consulte la página Transformer en Amazon SageMaker Python SDK.

sm_transformer = sagemaker.transformer.Transformer(…, assemble_with="Line", accept="text/csv") sm_transformer.transform(…, split_type="Line", content_type="text/csv", input_filter="$[1:]", join_source="Input")

Si está utilizando el AWS SDKpara Python (Boto 3), añade el siguiente código a tu CreateTransformJob solicitud.

{ "DataProcessing": { "InputFilter": "$[1:]", "JoinSource": "Input" }, "TransformOutput": { "Accept": "text/csv", "AssembleWith": "Line" }, "TransformInput": { "ContentType": "text/csv", "SplitType": "Line" } }

Para especificar las columnas SageMaker, utilice el índice de los elementos de la matriz. La primera columna es el índice 0, la segunda columna es el índice 1 y la sexta columna es el índice 5.

Para excluir la primera columna de la entrada, establezca InputFilter en "$[1:]". Los dos puntos (:) indican SageMaker que hay que incluir todos los elementos entre dos valores, ambos inclusive. Por ejemplo, $[1:4] especifica de la segunda a la quinta columnas.

Si omite el número después de los dos puntos, por ejemplo, [5:], el subconjunto incluye todas las columnas desde la sexta hasta la última columna. Si omite el número antes de los dos puntos, por ejemplo, [:5], el subconjunto incluye todas las columnas desde la primera columna (índice 0) hasta la sexta columna.

Ejemplo: las inferencias de salida se unen a una columna de ID y excluyen la columna de ID de la entrada () CSV

Si utiliza Amazon SageMaker Python SDK, puede especificar la salida para unir solo columnas de entrada específicas (como la columna ID) con las inferencias especificándolas output_filter en la llamada al transformador. output_filterUtiliza una JSONPath subexpresión para especificar qué columnas se devolverán como salida después de unir los datos de entrada con los resultados de la inferencia. La siguiente solicitud muestra cómo hacer predicciones excluyendo una columna de ID y, a continuación, uniendo la columna de ID a las inferencias. Tenga en cuenta que, en el siguiente ejemplo, la última columna (-1) de la salida contiene las inferencias. Si utiliza JSON archivos, SageMaker almacena los resultados de la inferencia en el atributo. SageMakerOutput Para obtener más información sobre los parámetros y sus valores aceptados, consulte la página Transformer en Amazon SageMaker Python SDK.

sm_transformer = sagemaker.transformer.Transformer(…, assemble_with="Line", accept="text/csv") sm_transformer.transform(…, split_type="Line", content_type="text/csv", input_filter="$[1:]", join_source="Input", output_filter="$[0,-1]")

Si está utilizando el AWS SDKpara Python (Boto 3), une solo la columna de ID con las inferencias añadiendo el siguiente código a tu CreateTransformJobsolicitud.

{ "DataProcessing": { "InputFilter": "$[1:]", "JoinSource": "Input", "OutputFilter": "$[0,-1]" }, "TransformOutput": { "Accept": "text/csv", "AssembleWith": "Line" }, "TransformInput": { "ContentType": "text/csv", "SplitType": "Line" } }
aviso

Si utilizas un archivo JSON de entrada con formato, el archivo no puede contener el nombre del atributo. SageMakerOutput Este nombre de atributo se reserva para las inferencias en el archivo de salida. Si el archivo JSON de entrada con formato X contiene un atributo con este nombre, es posible que los valores del archivo de entrada se sobrescriban con la inferencia.