Associazione dei risultati delle previsioni ai record di input - Amazon SageMaker

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Associazione dei risultati delle previsioni ai record di input

Quando si creano previsioni su un set di dati di grandi dimensioni, è possibile escludere gli attributi non necessari per la previsione. Una volta create le previsioni, è possibile associare alcuni attributi esclusi a tali previsioni o ad altri dati di input nel report. Usando la trasformazione in batch per eseguire queste fasi di elaborazione dei dati, spesso è possibile eliminare operazioni aggiuntive di preelaborazione o postelaborazione. Puoi utilizzare i file di input solo in CSV formato JSON Y.

Flusso di lavoro per associare le inferenze ai record di input

Il seguente diagramma mostra il flusso di lavoro per associare le inferenze ai record di input.

Il flusso di lavoro per associare le inferenze ai record di input.

L'associazione delle inferenze ai dati di input prevede tre fasi:

  1. Filtrare i dati di input non necessari per l'inferenza prima di passarli al processo di trasformazione in batch. Utilizzare il parametro InputFilter per determinare quali attributi utilizzare come input per il modello.

  2. Associare i dati di input ai risultati dell'inferenza. Utilizzare il parametro JoinSource per combinare i dati di input con l'inferenza.

  3. Filtrare i dati collegati per mantenere gli input necessari a fornire un contesto per l'interpretazione delle previsioni nei report. Utilizzare OutputFilter per archiviare la porzione specificata del set di dati completo nel file di output.

Utilizzare l'elaborazione dati nei processi di trasformazione in batch

Per elaborare i dati durante la creazione di un processo di trasformazione in batch con CreateTransformJob:

  1. Specificare la porzione di input da passare al modello con il parametro InputFilter nella struttura dati DataProcessing.

  2. Collegare i dati di input grezzi ai dati trasformati con il parametro JoinSource.

  3. Specificare quale porzione dell'input collegato e dei dati trasformati dal processo di trasformazione in batch includere nel file di output con il parametro OutputFilter.

  4. Scegliete i JSON file in formato o CSV formattato per l'input:

    • Per i file di input in JSON formato JSON - o LINES, SageMaker aggiunge l'SageMakerOutputattributo al file di input o crea un nuovo file di JSON output con gli attributi and. SageMakerInput SageMakerOutput Per ulteriori informazioni, consulta DataProcessing.

    • Per i file di input CSV in formato, i dati di input uniti sono seguiti dai dati trasformati e l'output è un file. CSV

Se si utilizza un algoritmo con la struttura DataProcessing, è necessario che supporti il formato scelto sia per i file di input che per quelli di output. Ad esempio, con il TransformOutputcampo di CreateTransformJobAPI, è necessario impostare entrambi i Acceptparametri ContentTypee su uno dei seguenti valori: text/csvapplication/json, o. application/jsonlines La sintassi per specificare le colonne in un CSV file e specificare gli attributi in un JSON file è diversa. L'utilizzo della sintassi sbagliata genera un errore. Per ulteriori informazioni, consulta Esempi di trasformazione in batch. Per ulteriori informazioni sui formati di file di input e output per gli algoritmi integrati, consulta Usa algoritmi SageMaker integrati di Amazon o modelli preaddestrati.

Anche i delimitatori di record per l'input e l'output devono essere coerenti con il file di input scelto. Il parametro SplitType indica come suddividere i record nel set di dati di input. Il parametro AssembleWith indica come riassemblare i record dell'output. Se si impostano i formati in ingresso e in uscita a text/csv, è necessario anche impostare i parametri SplitType e AssembleWith al valore line. Se si impostano i formati in ingresso e in uscita a application/jsonlines, è possibile impostare i parametri SplitType e AssembleWith su line.

Per CSV i file, non è possibile utilizzare caratteri di nuova riga incorporati. Per JSON i file, il nome dell'attributo SageMakerOutput è riservato all'output. Il file JSON di input non può avere un attributo con questo nome. In caso contrario, i dati del file di input potrebbero essere sovrascritti.

JSONPathOperatori supportati

Per filtrare e unire i dati di input e l'inferenza, utilizzate una JSONPath sottoespressione. SageMaker supporta solo un sottoinsieme degli operatori definiti. JSONPath La tabella seguente elenca gli JSONPath operatori supportati. Per CSV i dati, ogni riga viene considerata come una JSON matrice, quindi è JSONPaths possibile applicare solo dati basati su indici$[0], ad esempio$[1:]. CSVanche i dati devono seguire il RFCformato.

JSONPathOperatore Descrizione Esempio
$

L'elemento radice di una query. Questo operatore è obbligatorio all'inizio di ogni espressione di percorso.

$
.<name>

Un elemento figlio in notazione "a punto".

$.id

*

Carattere jolly Utilizzato al posto di un nome di attributo o di un valore numerico.

$.id.*

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

Un elemento o molteplici elementi figli in notazione "a parentesi graffa".

$['id','SageMakerOutput']

[<number> (,<number>)]

Un indice o una matrice di indici. Sono supportati anche valori di indice negativi. L'indice -1 fa riferimento all'ultimo elemento in una matrice.

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

[<start>:<end>]

Un operatore di sezionamento della matrice. Il metodo array slice () estrae una sezione di un array e restituisce un nuovo array. Se ometti <start>, SageMaker utilizza il primo elemento dell'array. Se si omette <end>, SageMaker utilizza l'ultimo elemento dell'array.

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

Quando si utilizza la notazione in parentesi per specificare più elementi figlio di un dato del campo, l'ulteriore nidificazione di elementi secondari tra parentesi non è supportata. Ad esempio, $.field1.['child1','child2'] è supportato mentre non lo è $.field1.['child1','child2.grandchild'].

Per ulteriori informazioni sugli JSONPath operatori, vedere JsonPathon GitHub.

Esempi di trasformazione in batch

I seguenti esempi mostrano alcune procedure comuni per collegare i dati di input con i risultati della predizione.

Esempio: generazione solo di inferenze

Per impostazione predefinita, il parametro DataProcessing non collega i risultati dell'inferenza all'input. Genera solo i risultati dell'inferenza come output.

Se desideri specificare in modo esplicito di non unire i risultati con l'input, usa Amazon SageMaker SDK Python e specifica le seguenti impostazioni in una chiamata al trasformatore.

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

Per generare inferenze utilizzando il AWS SDKper Python, aggiungi il seguente codice alla tua CreateTransformJob richiesta. Il codice seguente mostra il comportamento predefinito.

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

Esempio: inferenze di uscita collegate a dati di input

Se utilizzi Amazon SageMaker Python SDK per combinare i dati di input con le inferenze nel file di output, specifica i accept parametri assemble_with and durante l'inizializzazione dell'oggetto transformer. Quando utilizzi la chiamata di trasformazione, specifica Input per il parametro join_source e specifica anche i parametri split_type e content_type. Il parametro split_type deve avere lo stesso valore di assemble_with e il parametro content_type deve avere lo stesso valore di accept. Per ulteriori informazioni sui parametri e sui relativi valori accettati, consulta la pagina Transformer in 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")

Se stai usando il AWS SDKper Python (Boto 3), unisci tutti i dati di input con l'inferenza aggiungendo il seguente codice alla tua richiesta. CreateTransformJob Devono corrispondere i valori per Accept e ContentType come pure i valori per AssembleWith e SplitType.

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

Per i file di input JSON o JSON Lines, i risultati sono nella SageMakerOutput chiave del file di input. JSON Ad esempio, se l'input è un JSON file che contiene la coppia chiave-valore{"key":1}, il risultato della trasformazione dei dati potrebbe essere. {"label":1}

SageMakerli memorizza entrambi nel file di input nella SageMakerInput chiave.

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

Il risultato unito per JSON deve essere un oggetto a coppia chiave-valore. Se l'input non è un oggetto coppia chiave-valore, SageMaker crea un nuovo file. JSON Nel nuovo JSON file, i dati di input vengono memorizzati nella SageMakerInput chiave e i risultati vengono archiviati come valore. SageMakerOutput

Per un CSV file, ad esempio, se il record è [1,2,3] e il risultato dell'etichetta è[1], il file di output conterrebbe[1,2,3,1].

Esempio: genera inferenze unite ai dati di input ed esclude la colonna ID dall'input () CSV

Se utilizzi Amazon SageMaker Python SDK per unire i dati di input con l'output di inferenza escludendo una colonna ID dall'input del trasformatore, specifica gli stessi parametri dell'esempio precedente e una JSONPath sottoespressione per la nella chiamata al trasformatore. input_filter Ad esempio, se i dati di input includono cinque colonne e la prima è la colonna ID, usa la seguente richiesta di trasformazione per selezionare tutte le colonne tranne la colonna ID come caratteristiche. Il trasformatore genera in uscita comunque tutte le colonne di input collegate alle inferenze. Per ulteriori informazioni sui parametri e sui relativi valori accettati, consulta la pagina Transformer in 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")

Se stai usando il AWS SDKper Python (Boto 3), aggiungi il seguente codice alla tua richiesta. CreateTransformJob

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

Per specificare le colonne in SageMaker, usa l'indice degli elementi dell'array. La prima colonna è l'indice 0, la seconda colonna è l'indice 1 e la sesta colonna è l'indice 5.

Per escludere la prima colonna dall'input, imposta InputFilter su "$[1:]". I due punti (:) SageMaker indicano di includere tutti gli elementi compresi tra due valori, inclusi. Ad esempio, $[1:4] specifica dalla seconda alla quinta colonna.

Se si omette il numero dopo i due punti, ad esempio [5:], il sottoinsieme include tutte le colonne dalla sesta fino all'ultima. Se si omette il numero prima dei due punti, ad esempio [:5], il sottoinsieme include tutte le colonne dalla prima colonna (indice 0) alla sesta colonna.

Esempio: inferenze di output unite a una colonna ID ed esclusione della colonna ID dall'input () CSV

Se utilizzi Amazon SageMaker Python SDK, puoi specificare l'output per unire solo colonne di input specifiche (come la colonna ID) alle inferenze specificando output_filter nella chiamata del trasformatore. output_filterUtilizza una JSONPath sottoespressione per specificare quali colonne restituire come output dopo aver unito i dati di input ai risultati dell'inferenza. La richiesta seguente mostra come è possibile fare previsioni escludendo una colonna ID e quindi collegare la colonna ID alle inferenze. Nota che nell'esempio seguente, l'ultima colonna (-1) dell'output contiene le inferenze. Se si utilizzano JSON file, SageMaker memorizza i risultati dell'inferenza nell'attributo. SageMakerOutput Per ulteriori informazioni sui parametri e sui relativi valori accettati, consulta la pagina Transformer in 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]")

Se stai usando il AWS SDKper Python (Boto 3), unisci solo la colonna ID con le inferenze aggiungendo il seguente codice alla tua richiesta. CreateTransformJob

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

Se stai usando un file di input in JSON formato -format, il file non può contenere il nome dell'attributo. SageMakerOutput Questo nome di attributo è riservato per le inferenze nel file di output. Se il file di input JSON -formatted contiene un attributo con questo nome, i valori nel file di input potrebbero essere sovrascritti dall'inferenza.