

Non aggiorniamo più il servizio Amazon Machine Learning né accettiamo nuovi utenti. Questa documentazione è disponibile per gli utenti esistenti, ma non la aggiorniamo più. Per ulteriori informazioni, consulta [Cos'è Amazon Machine Learning](https://docs.aws.amazon.com/machine-learning/latest/dg/what-is-amazon-machine-learning.html).

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à.

# Trasformazioni dei dati per il Machine Learning
<a name="data-transformations-for-machine-learning"></a>

 I modelli di Machine learning sono utili solo se la qualità dei dati utilizzati per addestrarli è elevata. Una caratteristica chiave di dati di addestramento di qualità è che sono forniti secondo una modalità ottimizzata per l'apprendimento e la generalizzazione. Il processo di raccolta dei dati in questo formato ottimale è noto come *trasformazione di caratteristiche*. 

**Topics**
+ [L'importanza della trasformazione delle caratteristiche](importance-of-feature-transformation.md)
+ [Trasformazioni delle caratteristiche con le composizioni dati](feature-transformations-with-data-recipes.md)
+ [customize a recipe](recipe-format-reference.md)
+ [Composizioni suggerite](suggested-recipes.md)
+ [Riferimento per le trasformazioni di dati](data-transformations-reference.md)
+ [Riordino dei dati](data-rearrangement.md)

# L'importanza della trasformazione delle caratteristiche
<a name="importance-of-feature-transformation"></a>

 Si prenda, ad esempio, un modello di machine learning il cui compito è decidere se una transazione di carta di credito è fraudolenta o meno. In base alle conoscenze generali delle applicazioni e all'analisi dei dati, è possibile decidere quali campi dati (o caratteristiche) siano importanti ai fini dell'inclusione nei dati di input. Ad esempio, l'importo della transazione, il nome del venditore, l'indirizzo e l'indirizzo del proprietario della carta di credito sono importanti per il processo di apprendimento. Viceversa, un ID transazione casuale non apporta alcuna informazione (se sappiamo che è veramente casuale) e non è utile. 

 Una volta deciso i campi da includere, si trasformano queste caratteristiche per semplificare il processo di apprendimento. Le trasformazioni aggiungono l'esperienza precedente ai dati di input, consentendo al modello di machine learning di trarre vantaggio da tale esperienza. Ad esempio, il seguente indirizzo del venditore è rappresentato da una stringa: 

 "123 Main Street, Seattle, WA 98101" 

 In sé, l'indirizzo ha un potere espressivo limitato: è utile solo per i pattern di apprendimento associati a quell'indirizzo esatto. La sua suddivisione in base a elementi costitutivi, tuttavia, è in grado di creare caratteristiche aggiuntive come "Indirizzo" (123 Main Street), "Città" (Seattle), "Stato" (WA) e "CAP" (98101). L'algoritmo di apprendimento può raggruppare transazioni più disparate e individuare pattern più ampi, e forse anche un'esperienza relativa ad alcuni codici postali di venditori con più attività fraudolenta di altri. 

 Per ulteriori informazioni sull'approccio e il processo relativi alla trasformazione delle caratteristiche, consultare [Concetti di Machine Learning](https://docs.aws.amazon.com/machine-learning/latest/dg/machine-learning-concepts.html). 

# Trasformazioni delle caratteristiche con le composizioni dati
<a name="feature-transformations-with-data-recipes"></a>

 Esistono almeno due modi per trasformare le caratteristiche prima di creare modelli ML con Amazon ML: è possibile trasformare direttamente i dati di input prima di proporli ad Amazon ML oppure si possono utilizzare le trasformazioni di dati integrate di Amazon ML. È possibile utilizzare le composizioni Amazon ML, ovvero istruzioni preformattate per comuni trasformazioni. Con le composizioni si può procedere come indicato di seguito: 
+  Scegli da un elenco di comuni trasformazioni di machine learning integrate e applicale alle singole variabili o a gruppi di variabili 
+  Seleziona le variabili di input e trasformazioni da rendere disponibili per il processo di machine learning 

 L'utilizzo delle composizioni Amazon ML offre diversi vantaggi. Amazon ML esegue le trasformazioni di dati per l'utente, perciò non è necessario implementarle manualmente. Inoltre, è una soluzione veloce perché Amazon ML applica le trasformazioni durante la lettura dei dati di input e fornisce i risultati per il processo di apprendimento senza il passaggio intermedio del salvataggio dei risultati su disco. 

# Riferimenti relativi al formato delle composizioni
<a name="recipe-format-reference"></a>

Le ricette di Amazon ML contengono istruzioni per trasformare i dati come parte del processo di apprendimento automatico. Le composizioni vengono definite utilizzando una sintassi simile a JSON, ma hanno restrizioni aggiuntive rispetto a quelle normalmente presenti in JSON. Le composizioni hanno le seguenti sezioni, che devono essere visualizzate nell'ordine mostrato qui:
+  **Groups (Gruppi)** abilita il raggruppamento di più variabili, per facilitare l'applicazione di trasformazioni. Ad esempio, è possibile creare un gruppo di tutte le variabili che hanno a che fare con le parti di testo libero di una pagina Web (titolo, corpo) e quindi eseguire una trasformazione su tutte le parti contemporaneamente. 
+  **Assignments (Assegnazioni)** abilita la creazione di variabili intermedie denominate che possono essere riutilizzate in fase di elaborazione. 
+  **Outputs (Risultati)** definisce quali variabili saranno utilizzate nel processo di apprendimento e quali trasformazioni (se presenti) si applicano a tali variabili. 

## Gruppi
<a name="groups"></a>

 È possibile definire gruppi di variabili per trasformare collettivamente tutte le variabili all'interno dei gruppi o utilizzare queste variabili per il machine learning senza trasformarle. Per impostazione predefinita, Amazon ML crea per te i seguenti gruppi:

 **ALL\$1TEXT, ALL\$1NUMERIC, ALL\$1CATEGORICAL, ALL\$1BINARY:** gruppi specifici per tipo, basati su variabili definite nello schema dell'origine dati. 

**Nota**  
Non è possibile creare un gruppo con `ALL_INPUTS`.

 Queste variabili possono essere utilizzate nella sezione degli output della composizione senza essere definite. È inoltre possibile creare gruppi personalizzati aggiungendo o togliendo variabili da gruppi esistenti, oppure direttamente da una raccolta di variabili. In questo esempio dimostriamo tutti e tre gli approcci e la sintassi per l'assegnazione dei gruppi: 

```
"groups": {

"Custom_Group": "group(var1, var2)",
"All_Categorical_plus_one_other": "group(ALL_CATEGORICAL, var2)"

}
```

 I nomi dei gruppi devono iniziare con un carattere alfabetico e possono essere costituiti da 1 a 64 caratteri. Se il nome del gruppo non inizia con un carattere alfabetico o se contiene caratteri speciali (, ' "\$1t\$1r\$1n ( ) \$1), il nome deve essere racchiuso tra virgolette per essere incluso nella composizione. 

## Assegnazioni
<a name="assignments"></a>

 È possibile assegnare una o più trasformazioni a una variabile intermedia, per comodità e leggibilità. Ad esempio, se si dispone di una variabile di testo denominata email\$1subject e si applica la trasformazione minuscola, è possibile denominare la variabile risultante email\$1subject\$1lowercase, consentendo di tenerne traccia facilmente altrove nella composizione. Le assegnazioni possono anche essere concatenate, per consentire di applicare più trasformazioni in un ordine specificato. L'esempio seguente mostra assegnazioni singole e concatenate nella sintassi della composizione: 

```
"assignments": {

"email_subject_lowercase": "lowercase(email_subject)",

"email_subject_lowercase_ngram":"ngram(lowercase(email_subject), 2)"

}
```

 I nomi delle variabili intermedie devono iniziare con un carattere alfabetico e possono essere costituiti da 1 a 64 caratteri. Se il nome non inizia con un carattere alfabetico o se contiene caratteri speciali (, ' "\$1t\$1r\$1n ( ) \$1), il nome deve essere racchiuso tra virgolette per essere incluso nella composizione. 

## Output
<a name="outputs"></a>

 La sezione risultati (output) controlla quali variabili di input saranno usate per il processo di apprendimento, e quali trasformazioni sono applicate. Una sezione di output vuota o inesistente è un errore, perché significa che nessuno dato sarà passato al processo di apprendimento. 

 La sezione di output più semplice include solo il gruppo predefinito **ALL\$1INPUTS**, indicando ad Amazon ML di utilizzare tutte le variabili definite nell'origine dati per l'apprendimento: 

```
"outputs": [

"ALL_INPUTS"

]
```

 La sezione di output può anche fare riferimento agli altri gruppi predefiniti, indicando ad Amazon ML di utilizzare tutte le variabili di questi gruppi: 

```
"outputs": [

"ALL_NUMERIC",

"ALL_CATEGORICAL"

]
```

 La sezione di output può anche fare riferimento a gruppi personalizzati. In questo esempio, solo uno dei gruppi personalizzati definiti nella sezione assegnazioni dei raggruppamenti nell'esempio precedente verrà utilizzato per il machine learning. Tutte le altre variabili saranno rimosse: 

```
"outputs": [

"All_Categorical_plus_one_other"

]
```

La sezione output può anche fare riferimento ad assegnazioni di variabili definite nella sezione assegnazioni:

```
"outputs": [

"email_subject_lowercase"

]
```

 Inoltre le variabili di input o le trasformazioni possono essere definite direttamente nella sezione di output: 

```
"outputs": [

"var1",

"lowercase(var2)"

]
```

 L'output deve specificare in modo esplicito tutte le variabili e le variabili trasformate che si prevede saranno disponibili per il processo di apprendimento. Supponiamo, ad esempio, di includere nell'output un prodotto cartesiano di var1 e var2. Se si desidera includere anche entrambe le variabili non elaborate var1 e var2, è necessario aggiungere le variabili non elaborate alla sezione di output: 

```
"outputs": [

"cartesian(var1,var2)",

"var1",

"var2"

]
```

 Gli output possono includere commenti per migliorare la leggibilità, con l'aggiunta del testo del commento insieme alla variabile: 

```
"outputs": [

"quantile_bin(age, 10) //quantile bin age",

"age // explicitly include the original numeric variable along with the
binned version"

]
```

 È possibile combinare tutti questi approcci all'interno della sezione di output. 

**Nota**  
I commenti non sono consentiti nella console Amazon ML quando si aggiunge una ricetta.

## Esempio completo di composizione
<a name="complete-recipe-example"></a>

 L'esempio seguente si riferisce a diversi processori di dati integrati che sono stati introdotti negli esempi precedenti: 

```
{

"groups": {

"LONGTEXT": "group_remove(ALL_TEXT, title, subject)",

"SPECIALTEXT": "group(title, subject)",

"BINCAT": "group(ALL_CATEGORICAL, ALL_BINARY)"

},

"assignments": {

"binned_age" : "quantile_bin(age,30)",

"country_gender_interaction" : "cartesian(country, gender)"

},

"outputs": [

"lowercase(no_punct(LONGTEXT))",

"ngram(lowercase(no_punct(SPECIALTEXT)),3)",

"quantile_bin(hours-per-week, 10)",

"hours-per-week // explicitly include the original numeric variable
along with the binned version",

"cartesian(binned_age, quantile_bin(hours-per-week,10)) // this one is
critical",

"country_gender_interaction",

"BINCAT"

]

}
```

# Composizioni suggerite
<a name="suggested-recipes"></a>

 Quando si crea una nuova origine dati in Amazon ML e le statistiche sono calcolate per quell'origine dati, Amazon ML crea anche una composizione (recipe) suggerita che può essere utilizzata per creare un nuovo modello ML dall'origine dati. L'origine dati suggerita si basa sui dati e sull'attributo di destinazione presenti nei dati, e fornisce un punto di partenza utile per la creazione e il perfezionamento dei modelli ML. 

 Per usare la composizione suggerita nella console di Amazon ML, scegliere **Datasource (Origine dati)** o **Datasource and ML model (Origine dati e modello ML)** dall'elenco a discesa **Create new (Crea nuovo)**. Per le impostazioni del modello ML, si dispone di una gamma di impostazioni di default o personalizzate per l'addestramento e la valutazione nella fase **Impostazioni del modello ML** della procedura guidata **Crea modello ML**. Se si sceglie l'opzione Default, Amazon ML utilizzerà automaticamente la composizione suggerita. Se si sceglie l'opzione Custom, l'editor della composizione mostrerà nella fase successiva la composizione suggerita, e sarà possibile verificarla o modificarla in base alle esigenze. 

**Nota**  
 Amazon ML consente di creare un'origine dati e di usarla immediatamente per creare un modello ML, prima che il calcolo delle statistiche sia completato. In questo caso, non si potrà vedere la composizione suggerita nell'opzione Custom, ma sarà comunque possibile saltare quella fase e far sì che Amazon ML utilizzi la composizione di default per l'addestramento del modello. 

 Per utilizzare la ricetta suggerita con l'API Amazon ML, puoi passare una stringa vuota nei parametri Recipe e RecipeUri API. Non è possibile recuperare la composizione suggerita utilizzando l'API di Amazon ML. 

# Riferimento per le trasformazioni di dati
<a name="data-transformations-reference"></a>

**Topics**
+ [Trasformazione N-gramma](#n-gram-transformation)
+ [Trasformazione OSB (Orthogonal Sparse Bigram)](#orthogonal-sparse-bigram-osb-transformation)
+ [Trasformazione in minuscolo](#lowercase-transformation)
+ [Trasformazione con rimozione della punteggiatura](#remove-punctuation-transformation)
+ [Trasformazione binning quantile](#quantile-binning-transformation)
+ [Trasformazione di normalizzazione](#normalization-transformation)
+ [Trasformazione del prodotto cartesiano](#cartesian-product-transformation)

## Trasformazione N-gramma
<a name="n-gram-transformation"></a>

 La trasformazione n-gramma utilizza una variabile di testo come input e produce stringhe corrispondenti allo scorrimento di una finestra di (configurabile dall'utente) n parole, generando gli output durante il processo. A titolo illustrativo, si prenda in considerazione la stringa di testo "Ho veramente apprezzato la lettura di questo libro". 

 Se si specifica la trasformazione n-gramma con dimensione finestra = 1 si hanno semplicemente tutte le singole parole di quella stringa: 

```
{"I", "really", "enjoyed", "reading", "this", "book"}
```

 Se si specifica la trasformazione n-gramma con dimensione finestra = 2 si hanno tutte le combinazioni di due parole oltre alle combinazioni con una singola parola: 

```
{"I really", "really enjoyed", "enjoyed reading", "reading this", "this
book", "I", "really", "enjoyed", "reading", "this", "book"}
```

 Se si specifica la trasformazione n-gramma con dimensione finestra = 3 si aggiungono le combinazioni di tre parole a questo elenco, ottenendo quanto segue: 

```
{"I really enjoyed", "really enjoyed reading", "enjoyed reading this",
"reading this book", "I really", "really enjoyed", "enjoyed reading",
"reading this", "this book", "I", "really", "enjoyed", "reading",
"this", "book"}
```

 È possibile richiedere n-grammi con dimensioni comprese tra 2 e 10 parole. Gli n-grammi con dimensione 1 vengono generati implicitamente per tutti gli input il cui tipo è contrassegnato come testo nello schema dei dati, pertanto non occorre richiederli. Infine, è necessario ricordare che gli n-grammi vengono generati tramite l'interruzione dei dati di input sui caratteri di spazio. Ciò significa che, ad esempio, i caratteri di punteggiature saranno considerati una parte dei token di parole: la generazione di n-grammi con una finestra di 2 per la stringa "rosso, verde, blu" consentirà di ottenere \$1"rosso", "verde", "blu", "rosso, verde", "verde, blu"\$1. È possibile utilizzare il processore per la rimozione di punteggiatura (descritto più avanti in questo documento) per rimuovere, se si vuole, i simboli di punteggiatura. 

 Calcolo di n-grammi con dimensioni della finestra 3 per variabili var1: 

```
"ngram(var1, 3)"
```

## Trasformazione OSB (Orthogonal Sparse Bigram)
<a name="orthogonal-sparse-bigram-osb-transformation"></a>

 La trasformazione OSB ha lo scopo di facilitare l'analisi delle stringhe di testo ed è un'alternativa alla trasformazione in bigrammi (n-grammo con dimensione della finestra 2). OSBs vengono generati facendo scorrere la finestra di dimensione n sul testo e generando ogni coppia di parole che include la prima parola nella finestra. 

 Per creare ogni OSB, le parole che lo costituiscono sono unite dalla "\$1" (sottolineatura) e ogni token ignorato è indicato aggiungendo un'altra sottolineatura all'OSB. Pertanto, la codifica OSB non solo i token visto all'interno di una finestra, ma anche un'indicazione del numero di token ignorato all'interno della stessa finestra. 

 Per illustrare, considerate la stringa «The quick brown fox jumps over the lazy dog» e della taglia 4. OSBs Le sei finestre di quattro parole e le ultime due finestre più corte dalla fine della stringa sono mostrate nell'esempio seguente, anch' OSBsesse generate da ciascuna di esse: 

 Finestra, \$1OSBs generated\$1 

```
"The quick brown fox", {The_quick, The__brown, The___fox}

"quick brown fox jumps", {quick_brown, quick__fox, quick___jumps}

"brown fox jumps over", {brown_fox, brown__jumps, brown___over}

"fox jumps over the", {fox_jumps, fox__over, fox___the}

"jumps over the lazy", {jumps_over, jumps__the, jumps___lazy}

"over the lazy dog", {over_the, over__lazy, over___dog}

"the lazy dog", {the_lazy, the__dog}

"lazy dog", {lazy_dog}
```

 Gli OBS sono un'alternativa rispetto ai n-grammi che potrebbero essere più adatti in alcune situazioni. Se i dati hanno campi di testo di grandi dimensioni (10 o più parole), si può fare qualche esperimento per vedere quale funziona meglio. Si noti la definizione di un campo di testo di grandi dimensioni può variare a seconda della situazione. Tuttavia, con campi di testo più grandi, è stato OSBs dimostrato empiricamente che rappresentano in modo univoco il testo grazie allo speciale simbolo di *salto* (il carattere di sottolineatura). 

 È possibile richiedere una dimensione finestra da 2 a 10 per trasformazioni OSB su variabili di testo di input. 

 Per calcolare OSBs con la dimensione della finestra 5 per la variabile var1: 

 "osb (var1, 5)" 

## Trasformazione in minuscolo
<a name="lowercase-transformation"></a>

 Il processore per la trasformazione in minuscolo converte gli input di testo in minuscolo. Ad esempio, dato l'input "The Quick Brown Fox Jumps Over the Lazy Dog", il risultato del processore sarà "the quick brown fox jumps over the lazy dog". 

 Per applicare la trasformazione in minuscolo alla variabile var1: 

 "lowercase(var1)" 

## Trasformazione con rimozione della punteggiatura
<a name="remove-punctuation-transformation"></a>

 Amazon ML divide implicitamente gli input contrassegnati come testo nello schema di dati sullo spazio. La punteggiatura nella stringa termina con token di parole adiacenti oppure come token completamente separati, a seconda dello spazio che la circonda. Se questo è indesiderabile, la trasformazione con rimozione della punteggiatura può essere usata per rimuovere i simboli di punteggiatura dalle caratteristiche generate. Ad esempio, data la stringa "Welcome to AML - please fasten your seat-belts\$1", viene implicitamente generato il seguente set di token: 

```
{"Welcome", "to", "Amazon", "ML", "-", "please", "fasten", "your", "seat-belts!"}
```

 L'applicazione del processore per la rimozione di punteggiatura a questa stringa consente di ottenere questo set: 

```
{"Welcome", "to", "Amazon", "ML", "please", "fasten", "your", "seat-belts"}
```

 Si noti che solo i segni di punteggiatura del prefisso e del suffisso vengono rimossi. I segni di punteggiatura che appaiono a metà di un token, ad esempio il trattino in "seat-belts" (cinture di sicurezza), non vengono rimossi. 

 Per applicare la rimozione della punteggiatura alla variabile var1: 

 "no\$1punct (var1)" 

## Trasformazione binning quantile
<a name="quantile-binning-transformation"></a>

 Il processore binning quantile richiede due input, una variabile numerica e un parametro denominato *bin number (numero bin)* e fornisce come risultato una variabile categorica. Lo scopo è scoprire la non linearità nella distribuzione della variabile raggruppando insieme i valori osservati. 

 In molti casi, il rapporto tra una variabile numerica e la destinazione è non lineare (il valore della variabile numerica non aumenta né diminuisce monotonicamente con la destinazione). In questi casi, può essere utile effettuare il binning della caratteristica numerica in una caratteristica categorica che rappresenta diversi intervalli della caratteristica numerica. Ogni valore della caratteristica categorica (bin) può quindi essere modellato come se avesse la propria relazione lineare con la destinazione. Ad esempio, supponiamo di informarti che la caratteristica numerica continua *account\$1age* non sia correlata linearmente alla probabilità di acquistare un libro. È possibile effettuare il binning dell'età in caratteristiche categoriche che potrebbero essere in grado di acquisire in modo più preciso il rapporto con la destinazione. 

 Il processore binning quantile può essere utilizzato per istruire Amazon ML a definire n contenitori di pari dimensioni in base alla distribuzione di tutti i valori di input della variabile età e quindi a sostituire ogni numero con un token di testo contenente il contenitore. Il numero ottimale di bin per una variabile numerica dipende dalle caratteristiche della variabile e dal suo rapporto con la destinazione, e ciò si determina meglio attraverso la sperimentazione. Amazon ML suggerisce il numero ottimale di contenitori per una caratteristica numerica basata su dati statistici nella [composizione suggerita](https://docs.aws.amazon.com/machine-learning/latest/dg/suggested-recipes.html). 

 È possibile richiedere tra 5 e 1.000 contenitori quantili da calcolare per qualsiasi variabile di input numerici. 

 L'esempio seguente spiega come calcolare e utilizzare 50 contenitori al posto della variabile numerica var1: 

 "quantile\$1bin(var1, 50)" 

## Trasformazione di normalizzazione
<a name="normalization-transformation"></a>

 Il trasformatore di normalizzazione normalizza le variabili numeriche per avere una media di zero e una varianza di uno. La normalizzazione delle variabili numeriche può aiutare il processo di apprendimento se vi sono differenze di gamma molto grandi tra le variabili numeriche, poiché variabili con la massima grandezza potrebbe dominare il modello ML, indipendentemente dal fatto che la funzione sia informativa o meno riguardo alla destinazione. 

 Per applicare questa trasformazione alla variabile numerica var1, aggiungere questo alla composizione: 

 normalize(var1) 

 Questo trasformatore può anche utilizzare come input un gruppo di variabili numeriche definito dall'utente o il gruppo predefinito per tutte le variabili numeriche (ALL\$1NUMERIC): 

 normalize (ALL\$1NUMERIC) 

 **Nota** 

 *Non* è obbligatorio utilizzare il processore di normalizzazione per le variabili numeriche. 

## Trasformazione del prodotto cartesiano
<a name="cartesian-product-transformation"></a>

 La trasformazione cartesiana genera permutazioni di due o più variabili di testo o di input categorico. Questa trasformazione viene utilizzata quando si sospetta un'interazione tra variabili. A titolo illustrativo, si prenda in considerazione il set di dati di marketing utilizzato nel tutorial relativo all'utilizzo di Amazon ML per prevedere le risposte a un'offerta di marketing. Con l'utilizzo di questo set di dati, vorremmo prevedere se una persona risponderebbe positivamente a una promozione, in base alle informazioni economiche e demografiche. Ci si potrebbe aspettare che il tipo di lavoro di una persona sia molto importante (forse c'è una correlazione tra lavorare in determinati campi e avere denaro a disposizione) e che il massimo livello di istruzione raggiunto sia anch'esso importante. È inoltre possibile avere un'intuizione più profonda circa il fatto che vi sia una forte interazione tra queste due variabili, per esempio che la promozione è particolarmente indicata per i clienti che sono imprenditori e che hanno conseguita una laurea. 

 La trasformazione del prodotto cartesiano richiede variabili categoriche o di testo come input e produce nuove caratteristiche in grado di acquisire l'interazione tra queste variabili di input. Nello specifico, per ogni esempio di addestramento, creerà una combinazione di caratteristiche e le aggiungerà come caratteristica indipendente. Supponiamo ad esempio che le righe di input semplificate abbiano questo aspetto: 

 target, education, job 

 0, university.degree, technician 

 0, high.school, services 

 1, university.degree, admin 

 Se specifichiamo che la trasformazione cartesiana deve essere applicata ai cambi delle variabili categoriche istruzione (education) e lavoro (job), la caratteristica risultante education\$1job\$1interaction avrà questo aspetto: 

 target, education\$1job\$1interaction 

 0, university.degree\$1technician 

 0, high.school\$1services 

 1, university.degree\$1admin 

 La trasformazione cartesiana è ancora più potente quando si tratta di lavorare su sequenze di token, come avviene quando uno dei suoi argomenti è una variabile di testo implicitamente o esplicitamente divisa in token. A titolo illustrativo, si prenda in considerazione l'attività di classificazione di un libro come manuale o meno. Intuitivamente si potrebbe pensare che qualcosa nel titolo possa dirci se si tratta di un manuale (determinate parole apparire più frequentemente nei titoli dei libri di testo) e che nella rilegatura del libro vi sia qualcosa di predittivo (è più probabile che i manuali siano rilegati con una copertura rigida), ma è la combinazione di alcune parole nel titolo e della rilegatura a essere più predittiva. Per un esempio reale, la tabella riportata di seguito mostra i risultati dell'applicazione del processore cartesiano alle variabili di input rilegatura e titolo: 


|  Manuale  |  Titolo  |  Rilegatura  |  Prodotto cartesiano di no\$1punct (titolo) e rilegatura  | 
| --- | --- | --- | --- | 
|  1  |  Economics: Principles, Problems, Policies (Economia: principi, problemi, politiche)  |  Hardcover (copertina rigida)  |  \$1"Economics\$1Hardcover", "Principles\$1Hardcover", "Problems\$1Hardcover", "Policies\$1Hardcover"\$1  | 
|  0  |  The Invisible Heart: An Economics Romance (Il cuore invisibile: una storia d'amore nell'economia)  |  Softcover (copertina morbida)  |  \$1"The\$1Softcover", "Invisible\$1Softcover", "Heart\$1Softcover", "An\$1Softcover", "Economics\$1Softcover", "Romance\$1Softcover"\$1  | 
|  0  |  Fun With Problems (Divertirsi con i problemi)  |  Softcover (copertina morbida)  |  \$1"Fun\$1Softcover", "With\$1Softcover", "Problems\$1Softcover"\$1  | 

 L'esempio seguente mostra come applicare il trasformatore cartesiano a var1 e var2: 

 cartesian(var1, var2) 

# Riordino dei dati
<a name="data-rearrangement"></a>

 La funzionalità di riordino dei dati consente di creare un'origine dati che si basa solo su una parte dei dati di input a cui punta. Ad esempio, quando crei un modello ML utilizzando la procedura guidata **Crea modello ML** nella console Amazon ML e scegli l'opzione di valutazione predefinita, Amazon ML riserva automaticamente il 30% dei tuoi dati per la valutazione del modello ML e utilizza l'altro 70% per la formazione. Questa funzionalità è abilitata dalla funzionalità Data Rearrangement di Amazon ML. 

 Se utilizzi l'API Amazon ML per creare origini dati, puoi specificare su quale parte dei dati di input si baserà una nuova origine dati. Puoi farlo passando le istruzioni nel `DataRearrangement` parametro a, o. `CreateDataSourceFromS3` `CreateDataSourceFromRedshift` `CreateDataSourceFromRDS` APIs Il contenuto della stringa è una DataRearrangement stringa JSON contenente le posizioni di inizio e fine dei dati, espressi come percentuali, un flag di complemento e una strategia di suddivisione. Ad esempio, la DataRearrangement stringa seguente specifica che il primo 70% dei dati verrà utilizzato per creare l'origine dati: 

```
{
    "splitting": {
        "percentBegin": 0,
        "percentEnd": 70,
        "complement": false,
        "strategy": "sequential"
    }
}
```

## DataRearrangement Parametri
<a name="data-rearrangement-terms"></a>

Per modificare il modo in cui Amazon ML crea un'origine dati, utilizza i seguenti parametri.

**PercentBegin (Facoltativo)**  
Utilizzare `percentBegin` per indicare dove iniziano i dati per l'origine dati. Se non includi `percentBegin` e`percentEnd`, Amazon ML include tutti i dati durante la creazione dell'origine dati.  
I valori validi vanno da `0` a `100`, inclusi.

**PercentEnd (Facoltativo)**  
Utilizzare `percentEnd` per indicare dove finiscono i dati per l'origine dati. Se non includi `percentBegin` e`percentEnd`, Amazon ML include tutti i dati durante la creazione dell'origine dati.  
I valori validi vanno da `0` a `100`, inclusi.

**Complement (facoltativo)**  
Il `complement` parametro indica ad Amazon ML di utilizzare i dati non inclusi nell'intervallo di `percentBegin` per `percentEnd` creare un'origine dati. Il parametro `complement` è utile se occorre creare origini dati complementari per l'addestramento e la valutazione. Per creare un'origine dati complementari, utilizzare gli stessi valori per `percentBegin` e `percentEnd`, insieme al parametro `complement`.  
Ad esempio, le due origini dati seguenti non condividono dati e possono essere utilizzate per addestrare e valutare un modello. La prima origine dati ha il 25% dei dati, mentre la seconda ha il 75% dei dati.  
Origine dati per la valutazione:  

```
{
    "splitting":{
        "percentBegin":0, 
        "percentEnd":25
    }
}
```
Origine dati per l'addestramento:  

```
{
    "splitting":{
        "percentBegin":0, 
        "percentEnd":25, 
        "complement":"true"
    }
}
```
I valori validi sono `true` e `false`.

**Strategy (facoltativo)**  
Per modificare il modo in cui Amazon ML divide i dati per un'origine dati, utilizza il parametro. `strategy`  
Il valore predefinito per il `strategy` parametro è`sequential`, il che significa che Amazon ML acquisisce tutti i record di dati compresi tra i `percentEnd` parametri `percentBegin` e per l'origine dati, nell'ordine in cui i record appaiono nei dati di input  
Le due righe seguenti `DataRearrangement` sono esempi di ordinamento sequenziale di origini dati di addestramento e valutazione:  
Origine dati per la valutazione: `{"splitting":{"percentBegin":70, "percentEnd":100, "strategy":"sequential"}}`  
Origine dati per l'addestramento: `{"splitting":{"percentBegin":70, "percentEnd":100, "strategy":"sequential", "complement":"true"}}`  
Per creare un'origine dati da una selezione casuale di dati, impostare il parametro `strategy` su `random` e fornire una stringa che viene utilizzata come valore di origine per la suddivisione casuale dei dati (ad esempio, è possibile utilizzare il percorso di S3 per i dati come stringa di origine casuale). Se scegli la strategia di suddivisione casuale, Amazon ML assegna a ogni riga di dati un numero pseudo-casuale, quindi seleziona le righe a cui è assegnato un numero compreso tra e. `percentBegin` `percentEnd` I numeri pseudocasuali sono assegnati utilizzando l'offset di byte come seed; perciò, se si modificano i risultati dei dati, si ottiene una divisione diversa. Qualsiasi ordine esistente viene mantenuto. La strategia di divisione casuale garantisce che le variabili dei dati di addestramento e valutazione siano distribuite in modo analogo. Si tratta di una funzione utile, ad esempio, nel caso in cui i dati di input possano avere un ordinamento implicito; altrimenti, ciò porterebbe a origini dati di addestramento e valutazione contenenti record di dati non simili.  
Le due righe seguenti `DataRearrangement` sono esempi di ordinamento non sequenziale di origini dati di addestramento e valutazione:  
Origine dati per la valutazione:  

```
{
    "splitting":{
        "percentBegin":70, 
        "percentEnd":100, 
        "strategy":"random", 
        "strategyParams": {
            "randomSeed":"RANDOMSEED"
        }
    }
}
```
Origine dati per l'addestramento:  

```
{
    "splitting":{
        "percentBegin":70, 
        "percentEnd":100, 
        "strategy":"random", 
        "strategyParams": {
            "randomSeed":"RANDOMSEED"
        }
        "complement":"true"
    }
}
```
I valori validi sono `sequential` e `random`.

**(Facoltativo) Strategia: RandomSeed**  
Amazon ML utilizza **RandomSeed** per suddividere i dati. Il seed di default per l'API è una stringa vuota. Per specificare un seed per la strategia di divisione casuale, effettuare una passata su una stringa. Per ulteriori informazioni sui seed casuali, consulta [Divisione casuale dei dati](splitting-types.md#random-splitting) la *Amazon Machine Learning Developer Guide*.

Per un codice di esempio che dimostra come utilizzare la convalida incrociata con Amazon ML, consulta [Github Machine](https://github.com/awslabs/machine-learning-samples) Learning Samples.