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.
Temas
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.
Para asociar inferencias a datos de entrada, existen tres pasos principales:
-
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. -
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. -
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:
-
Especifique la parte de la entrada que se va a transferir al modelo con el parámetro
InputFilter
en la estructura de datosDataProcessing
. -
Una los datos de entrada sin procesar con los datos transformados con el parámetro
JoinSource
. -
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
. -
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, consulteDataProcessing
. -
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 TransformOutput
campo CreateTransformJob
API, debe establecer Accept
los parámetros ContentType
y 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 Algoritmos integrados y modelos previamente entrenados en Amazon SageMaker.
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. |
$ |
. |
Un elemento secundario con notación de puntos. |
|
* |
Un comodín. Úselo en lugar de un nombre de atributo o valor numérico. |
|
[' |
Un elemento con notación de corchete o varios elementos secundarios. |
|
[ |
Un índice o una matriz de índices. También se admiten valores de índice negativos. Un índice |
|
[ |
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 |
|
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
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.
Temas
- Ejemplo: generación de inferencias solamente
- Ejemplo: inferencias de salida unidas a datos de entrada
- Ejemplo: las inferencias de salida se unen con los datos de entrada y se excluye la columna ID de la entrada () CSV
- Ejemplo: las inferencias de salida se unen a una columna de ID y excluyen la columna de ID de la entrada () CSV
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
sm_transformer = sagemaker.transformer.Transformer(…) sm_transformer.transform(…, input_filter="$", join_source= "None", output_filter="$")
Para generar inferencias con Python, agrega el siguiente código a tu CreateTransformJob solicitud. AWS SDK 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 SDKaccept
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
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 utilizas AWS SDK para Python (Boto 3), une todos los datos de entrada con la inferencia añadiendo el siguiente código a tu CreateTransformJob
solicitud. 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 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 [1,2,3,1]
contendrá:
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 SDKinput_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
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 AWS SDK para Python (Boto 3), añada el siguiente código a su
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 SDKoutput_filter
en la llamada al transformador. output_filter
Utiliza 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
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 utilizas AWS SDK para Python (Boto 3), une solo la columna de ID con las inferencias añadiendo el siguiente código a tu CreateTransformJob
solicitud.
{ "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.