Informazioni di riferimento sui comandi dell'interfaccia della riga di comando ML.NET

I comandi classification, regression e recommendation sono i comandi principali forniti dallo strumento dell'interfaccia della riga di comando di ML.NET. Questi comandi consentono di generare modelli di qualità ML.NET validi per i modelli di classificazione, regressione e raccomandazione usando Machine Learning automatizzato (AutoML), nonché il codice C# di esempio per eseguire/assegnare un punteggio a tale modello. Inoltre, il codice C# per eseguire il training del modello viene generato per eseguire ricerche sull'algoritmo e sulle impostazioni del modello.

Nota

Questo articolo fa riferimento all'interfaccia della riga di comando ML.NET e alla funzionalità di Machine Learning automatico ML.NET attualmente in anteprima e il materiale può essere soggetto a modifiche.

Panoramica

Sintassi di esempio:

mlnet regression --dataset "cars.csv" --label-col price

I comandi dell'attività ML mlnet (classification, regression, recommendation e forecasting) generano gli asset seguenti:

  • Un file ZIP di modello serializzato ("modello ottimale") pronto per l'uso.
  • Codice C# per eseguire/assegnare punteggi al modello generato.
  • Codice C# con il codice di training usato per generare tale modello.

I primi due asset possono essere usati direttamente nelle app degli utenti finali (app Web ASP.NET Core, servizi, app desktop e altro ancora) per eseguire stime con il modello.

Il terzo asset, il codice di training, mostra il codice API ML.NET usato dall'interfaccia della riga di comando per eseguire il training del modello generato, in modo da poter esaminare l'algoritmo e le impostazioni specifiche del modello.

Esempi

Il comando dell'interfaccia della riga di comando più semplice per un problema di classificazione (AutoML deduce la maggior parte della configurazione dai dati forniti):

mlnet classification --dataset "customer-feedback.tsv" --label-col Sentiment

Un altro comando dell'interfaccia della riga semplice per un problema di regressione:

mlnet regression --dataset "cars.csv" --label-col Price

Creare ed eseguire il training di un modello di classificazione con un set di dati con training, un set di dati di test e ulteriori argomenti espliciti di personalizzazione:

mlnet classification --dataset "/MyDataSets/Population-Training.csv" --test-dataset "/MyDataSets/Population-Test.csv" --label-col "InsuranceRisk" --cache on --train-time 600

Opzioni di comando

I comandi dell'attività ML mlnet (classification, regression, recommendation, forecasting e train) eseguono il training di più modelli in base al set di dati fornito e alle opzioni dell'interfaccia della riga di comando di ML.NET. Questi comandi selezionano anche il modello migliore, salvano il modello come file .zip serializzato e generano codice C# correlato per l'assegnazione dei punteggi e il training.

Opzioni di classificazione

L'esecuzione di mlnet classification eseguirà il training di un modello di classificazione. Scegliere questo comando se si vuole che un modello di Machine Learning categorizzi i dati in 2 o più classi (ad esempio, l'analisi del sentiment).

mlnet classification

--dataset <path> (REQUIRED)

--label-col <col> (REQUIRED)

--cache <option>

--has-header (Default: true)

--ignore-cols <cols>

--log-file-path <path>

--name <name>

-o, --output <path>

--test-dataset <path>

--train-time <time> (Default: 30 minutes, in seconds)

--validation-dataset <path>

-v, --verbosity <v>

-?, -h, --help

Opzioni di regressione

L'esecuzione di mlnet regression eseguirà il training di un modello di regressione. Scegliere questo comando se si vuole che un modello di Machine Learning preveda un valore numerico, ad esempio la stima dei prezzi.

mlnet regression

--dataset <path> (REQUIRED)

--label-col <col> (REQUIRED)

--cache <option>

--has-header (Default: true)

--ignore-cols <cols>

--log-file-path <path>

--name <name>

-o, --output <path>

--test-dataset <path>

--train-time <time> (Default: 30 minutes, in seconds)

--validation-dataset <path>

-v, --verbosity <v>

-?, -h, --help

Opzioni di raccomandazione

L'esecuzione di mlnet recommendation eseguirà il training di un modello di raccomandazione. Scegliere questo comando se si vuole che un modello di Machine Learning consigli gli elementi agli utenti in base alle classificazioni (ad esempio, raccomandazione del prodotto).

mlnet recommendation

--dataset <path> (REQUIRED)

--item-col <col> (REQUIRED)

--rating-col <col> (REQUIRED)

--user-col <col> (REQUIRED)

--cache <option>

--has-header (Default: true)

--log-file-path <path>

--name <name>

-o, --output <path>

--test-dataset <path>

--train-time <time> (Default: 30 minutes, in seconds)

--validation-dataset <path>

-v, --verbosity <v>

-?, -h, --help

Le opzioni di input non valide consentono allo strumento dell'interfaccia della riga di comando di generare un elenco di input validi e un messaggio di errore.

Opzioni di previsione

L'esecuzione di mlnet forecasting eseguirà il training di un modello di previsione delle serie temporali. Scegliere questo comando se si vuole che un modello di Machine Learning preveda un valore base sui dati cronologici (ad esempio, previsione delle vendite).

mlnet forecasting

--dataset <dataset> (REQUIRED)

--horizon <horizon> (REQUIRED)

--label-col <label-col> (REQUIRED)

--time-col <time-col> (REQUIRED)

--cache <Auto|Off|On>

--has-header

--log-file-path <log-file-path>

--name <name>

-o, --output <output>

--test-dataset <test-dataset>

--train-time <train-time>

-v, --verbosity <verbosity>

Opzioni di training

L'esecuzione di mlnet train eseguirà il training di un modello basato su un file "mbconfig" generato da Model Builder. Per il corretto funzionamento di questo comando, i dati di training devono trovarsi nella stessa directory del file "mbconfig".

-training-config <training-config> (REQUIRED)

--log-file-path <log-file-path>

-v, --verbosity <verbosity>

Set di dati

--dataset | -d (string)

Questo argomento specifica il percorso file di una delle opzioni seguenti:

  • A: l'intero file del set di dati: Se si usa questa opzione e l'utente non fornisce --test-dataset e --validation-dataset, allora la convalida incrociata (k-fold e così via) o gli approcci automatici di suddivisione dei dati verranno usati internamente per convalidare il modello. In questo caso l'utente dovrà specificare soltanto il percorso file del set di dati.

  • B: il file del set di dati di training: Se l'utente fornisce anche set di dati per la convalida del modello (usando --test-dataset e facoltativamente --validation-dataset), l'argomento --dataset significa avere solo il "set di dati di training". Ad esempio, quando viene usato un approccio 80% - 20% per convalidare la qualità del modello e ottenere le metriche di accuratezza, il "training set" avrà l'80% dei dati, mentre il "set di dati di test" avrà il 20% dei dati.

Set di dati di test

--test-dataset | -t (string)

Percorso del file del set di dati di test, ad esempio quando viene usato un approccio 80% - 20% durante le convalide regolari per ottenere le metriche di accuratezza.

Se viene usato --test-dataset, è necessario specificare anche --dataset.

L'argomento --test-dataset è facoltativo, a meno che non venga usato --validation-dataset. In questo caso, l'utente deve usare i tre argomenti.

Set di dati di convalida

--validation-dataset | -v (string)

Percorso del file del set di dati di convalida. In tutti i casi il set di dati di convalida è facoltativo.

Se si usa validation dataset, il comportamento deve essere il seguente:

  • Anche gli argomenti test-dataset e --dataset sono obbligatori.

  • Il set di dati validation-dataset viene usato per stimare l'errore di previsione per la selezione del modello.

  • Il set di dati test-dataset viene usato per la valutazione dell'errore di generalizzazione del modello selezionato finale. In teoria, il set di test deve essere conservato in un "vault" e usato solo alla fine dell'analisi dei dati.

In pratica, quando vengono usati validation dataset e test dataset, la fase di convalida è suddivisa in due parti:

  1. Si esaminano innanzitutto i modelli e si seleziona l'approccio migliore usando i dati di convalida (=validation)
  2. Quindi si valuta l'accuratezza dell'approccio selezionato (=test).

Di conseguenza, la suddivisione dei dati potrebbe essere 80/10/10 o 75/15/10. Ad esempio:

  • Il file di training-dataset deve avere il 75% dei dati.
  • Il file di validation-dataset deve avere il 15% dei dati.
  • Il file di test-dataset deve avere il 10% dei dati.

In ogni caso, queste percentuali verranno decise dall'utente tramite l'interfaccia della riga di comando che fornirà i file già suddivisi.

Colonna di etichetta

--label-col (int o string)

Con questo argomento, è possibile specificare una colonna obiettivo/destinazione specifica (la variabile di cui effettuare la previsione) usando il nome della colonna impostata nell'intestazione del set di dati o l'indice numerico della colonna nel file del set di dati (i valori dell'indice della colonna iniziano da 0).

Questo argomento viene usato per problemi di classificazione e regressione.

Colonna elemento

--item-col (int o string)

La colonna dell'elemento include l'elenco di elementi valutati dagli utenti (gli elementi sono consigliati agli utenti). Questa colonna può essere specificata usando il nome della colonna impostata nell'intestazione del set di dati o l'indice numerico della colonna nel file del set di dati (i valori dell'indice di colonna iniziano da 0).

Questo argomento viene usato solo per l'attività di raccomandazione.

Colonna Valutazione

--rating-col (int o string)

La colonna rating include l'elenco delle classificazioni che vengono date agli elementi dagli utenti. Questa colonna può essere specificata usando il nome della colonna impostata nell'intestazione del set di dati o l'indice numerico della colonna nel file del set di dati (i valori dell'indice di colonna iniziano da 0).

Questo argomento viene usato solo per l'attività di raccomandazione.

Colonna utente

--user-col (int o string)

La colonna utente contiene l'elenco di utenti che assegnano valutazioni agli elementi. Questa colonna può essere specificata usando il nome della colonna impostata nell'intestazione del set di dati o l'indice numerico della colonna nel file del set di dati (i valori dell'indice di colonna iniziano da 0).

Questo argomento viene usato solo per l'attività di raccomandazione.

Ignora colonne

--ignore-columns (string)

Con questo argomento è possibile ignorare le colonne esistenti nel file del set di dati in modo che non vengano caricate e usate dai processi di training.

Specificare i nomi delle colonne da ignorare. Usare ', ' (virgola seguita da uno spazio) oppure ' ' (spazio) per separare più nomi di colonna. È possibile usare le virgolette per nomi di colonna che contengono uno spazio vuoto (ad esempio, "accesso eseguito").

Esempio:

--ignore-columns email, address, id, logged_in

Ha un’intestazione

--has-header (bool)

Specificare se i file di set di dati includono una riga di intestazione. I valori possibili sono:

  • true
  • false

L'interfaccia della riga di comando ML.NET tenterà di rilevare questa proprietà se questo argomento non è specificato dall'utente.

Ora del training

--train-time (string)

Per impostazione predefinita, il tempo massimo di esplorazione/training è di 30 minuti.

Questo argomento imposta il tempo massimo (in secondi) per il processo per l'esplorazione di più trainer e configurazioni. Il tempo configurato può essere superato se il tempo specificato è troppo breve (ad esempio, 2 secondi) per una singola iterazione. In questo caso, il tempo effettivo corrisponde al tempo necessario per produrre una configurazione di modello in una singola iterazione.

Il tempo necessario per le iterazioni può variare a seconda delle dimensioni del set di dati.

Cache

--cache (string)

Se si usa la memorizzazione nella cache, verrà caricato in memoria l'intero training set.

Per set di dati di piccole e medie dimensioni, l'uso della cache può migliorare nettamente le prestazioni di training riducendo il tempo di training rispetto a quando non si usa la cache.

Tuttavia, per i set di dati di grandi dimensioni, il caricamento di tutti i dati in memoria può influire negativamente ed esaurire la memoria. Quando viene eseguito il training con file di set di dati di grandi dimensioni senza usare la cache, ML.NET esegue lo streaming di blocchi di dati dell'unità quando è necessario caricare più dati durante il training.

È possibile specificare i valori seguenti:

on: impone l'uso della cache durante il training. off: impedisce l'uso della cache durante il training. auto: l'uso della cache è determinato dalle regole euristiche della funzionalità di Machine Learning automatico. In genere i set di dati di piccole e medie dimensioni usano la cache, mentre i set di dati di grandi dimensioni non usano la cache se viene usata l'opzione auto.

Se non si specifica il parametro --cache, viene usata la configurazione auto della cache per impostazione predefinita.

Nome

--name (string)

Nome del progetto di output o della soluzione creata. Se viene specificato alcun nome, viene usato il nome sample-{mltask}.

Verrà assegnato lo stesso nome anche al file di modello di ML.NET (file con estensione zip).

Percorso di output

--output | -o (string)

Percorso o cartella radice in cui posizionare l'output generato. Il valore predefinito è la directory corrente.

Livello di dettaglio

--verbosity | -v (string)

Imposta il livello di dettaglio dell'output standard.

I valori consentiti sono i seguenti:

  • q[uiet]
  • m[inimal] (per impostazione predefinita)
  • diag[nostic] (livello informazioni di registrazione)

Per impostazione predefinita, lo strumento dell'interfaccia della riga di comando dovrebbe visualizzare un feedback minimo (minimal), ad esempio indicare che è attivo e se possibile il tempo rimanente o la percentuale di tempo trascorso.

Help

-h |--help

Visualizza le informazioni della Guida per il comando con una descrizione per ogni parametro.

Vedi anche