Che cos'è ML.NET?
ML.NET è un framework di apprendimento automatico gratuito, open source e multipiattaforma creato da Microsoft per la piattaforma di sviluppo .NET.
ML.NET
ML.NET è un framework di apprendimento automatico gratuito, open source e multipiattaforma per la piattaforma di sviluppo .NET.
ML.NET consente di eseguire il training, compilare e distribuire modelli di Machine Learning personalizzati usando C# o F# per diversi scenari ML. ML.NET include funzionalità come Machine Learning automatizzato (AutoML) e strumenti come l'interfaccia della riga di comando di ML.NET e ML.NET Model Builder, che semplificano ulteriormente l'integrazione dell'apprendimento automatico nelle applicazioni.
Guida dettagliata per ML.NET
ML.NET seguire gli stessi passaggi di base per quasi tutti gli scenari; combina il caricamento dei dati, le trasformazioni e il training del modello per semplificare la creazione di modelli di Machine Learning.
Creare contesto ML.NET
MLContext è il punto di partenza per tutte le operazioni di ML.NET. Il MLContext
viene usato per tutti gli aspetti della creazione e dell'utilizzo di un modello di ML.NET. Concettualmente è simile a DbContext
in Entity Framework.
var mlContext = new MLContext();
Una volta che si ha un'istanza di MLContext
, è possibile caricare e trasformare i dati, scegliere l'algoritmo migliore per l'attività di Machine Learning, eseguire il training del modello. Dopo il training, è possibile testare l'accuratezza del modello, salvarlo su disco e usarlo per effettuare previsioni. È possibile inizializzare un MLContext
da un modello salvato in precedenza su disco.
Carica dati
Machine Learning usa dati noti, ad esempio dati di training, per trovare i modelli per effettuare previsioni su nuovi dati sconosciuti.
Gli input per Machine Learning sono denominati Funzionalità, ovvero gli attributi usati per eseguire stime. L'output di Machine Learning è denominato Etichetta, ovvero la stima effettiva.
I dati in ML.NET sono rappresentati come un oggetto IDataView, che è un modo flessibile ed efficiente per la descrizione dei dati tabulari, ad esempio righe e colonne. Gli oggetti IDataView possono contenere numeri, testo, valori booleani, vettori e altro ancora. È possibile caricare i dati dai file o dalle origini di streaming in tempo reale a un oggetto IDataView.
LoadFromTextFile
consente di caricare i dati da TXT, CSV, TSV e da altri formati di file.
IDataView trainingData = mlContext.Data
.LoadFromTextFile<SentimentInput>(dataPath, separatorChar: ',', hasHeader: true);
LoadFromEnumerable
consente il caricamento da raccolte in memoria, JSON/XML, database relazionali e non relazionali, ad esempio SQL, CosmosDB o MongoDB, e molte altre origini dati.
IDataView trainingData = mlContext.Data
.LoadFromEnumerable<SentimentInput>(inMemoryCollection);
Trasformazione dei dati
Nella maggior parte dei casi, i dati disponibili non sono adatti per essere usati direttamente per eseguire il training di un modello di Machine Learning. I dati non elaborati devono essere pre-elaborati usando le trasformazioni dei dati.
I trasformatori prendono i dati, eseguono alcune operazioni su di essi e restituiscono nuovi dati trasformati.
Sono disponibili set predefiniti di trasformazioni di dati per la sostituzione dei valori mancanti, la conversione dei dati, la definizione delle caratteristiche del testo e altro ancora.
// Convert sentiment text into numeric features
IEstimator<ITransformer> dataTransformPipeline = mlContext.Transforms.Text
.FeaturizeText("Features", "SentimentText");
Scegli algoritmo
Quando si usa Machine Learning e ML.NET, è necessario scegliere un'attività di Machine Learning associata allo scenario. ML.NET offre più di 30 algoritmi (o trainer) per un'ampia gamma di attività ML:
Attività ML | Algoritmi |
---|---|
Classificazione binaria (ad esempio, analisi del sentiment) | AveragedPerceptronTrainer, SdcaLogisticRegressionBinaryTrainer |
Classificazione multiclasse (ad esempio, categorizzazione degli argomenti) | LightGbmMulticlassTrainer, OneVersusAllTrainer |
Regressione (ad esempio, previsione dei prezzi) | LbfgsPoissonRegressionTrainer, FastTreeRegressionTrainer |
Clustering (ad esempio, segmentazione dei clienti) | KMeansTrainer |
Rilevamento anomalie (ad esempio, rilevamento di picchi nella vendita di shampoo) | RandomizedPcaTrainer |
Raccomandazione (ad esempio, sistema di raccomandazione di film) | MatrixFactorizationTrainer |
Classificazione (ad esempio, risultati della ricerca) | LightGbmRankingTrainer, FastTreeRankingTrainer |
IEstimator<ITransformer> trainer = mlContext.BinaryClassification.Trainers
.AveragedPerceptron(labelColumnName: "Sentiment", featureColumnName: "Features"));
IEstimator<ITransformer> trainingPipeline = dataTransformPipeline.Append(trainer);
Esegui il training del modello
Le trasformazioni dei dati e gli algoritmi specificati non vengono eseguiti finché non si chiama il metodo Fit()
(a causa dell'approccio di caricamento differito di ML.NET). Questo avviene quando viene eseguito il training del modello.
Uno strumento di stima accetta dati, apprende dai dati e crea un trasformatore. Nel caso del training di modello, i dati di training sono l'input e il modello sottoposto a training è l'output. Il modello sottoposto a training è quindi un trasformatore che trasforma le funzionalità di input da nuovi dati a previsioni di output.
ITransformer model = pipeline.Fit(trainingData);
Valutare il modello
ML.NET offre analizzatori che valutano le prestazioni del modello in base a un'ampia gamma di metriche:
- Accuratezza
- Area sotto la curva (AUC)
- Quadrato con R:
- RMSE (radice errore quadratico medio)
// Make predictions on test data
IDataView predictions = model.Transform(testDataView);
// Evaluate model and return metrics
var metrics = mlContext.BinaryClassification
.Evaluate(predictions, labelColumnName: "Sentiment");
// Print out accuracy metric
Console.WriteLine("Accuracy" + metrics.Accuracy);
Distribuire e utilizzare il modello
È possibile salvare il modello sottoposto a training come file binario e quindi integrarlo nelle applicazioni .NET.
mlContext.Model.Save(model, trainingData, "model.zip");
Dopo aver salvato il modello con training, è possibile caricare il modello nelle altre applicazioni .NET.
MLContext mlContext = new MLContext();
DataViewSchema predictionPipelineSchema;
ITransformer trainedModel = mlContext.Model.Load("model.zip", out predictionPipelineSchema);
È quindi possibile usare il modello caricato per iniziare a effettuare previsioni. È possibile usare il Motore di previsione di, che è un'API di comodità usata per effettuare singole stime, o il metodo Transform di, usato per effettuare stime batch.
var predEngine = mlContext.Model.CreatePredictionEngine(model);
SentimentInput sampleComment = new SentimentInput{ SentimentText = "This is very rude!" };
SentimentOutput result = predEngine.Predict(sampleComment);
Console.WriteLine(result.Prediction);
Informazioni su come usare un modello di apprendimento automatico con training
DOMANDE FREQUENTI SU ML.NET
A cosa serve ML.NET?
ML.NET è un framework di Machine Learning per sviluppatori .NET; puoi usare ML.NET per integrare modelli di Machine Learning personalizzati nelle applicazioni .NET. Puoi usare ML.NET per molti scenari, ad esempio l'analisi valutazione, la stima dei prezzi, la raccomandazione del prodotto, la previsione delle vendite, la classificazione delle immagini, il rilevamento di oggetti e altro ancora. Vedere la repository GitHub samples per altri esempi di quello che puoi fare con ML.NET.
Qual è la differenza tra intelligenza artificiale e Machine Learning?
L'intelligenza artificiale è un ramo del calcolo che prevede il training dei computer per eseguire operazioni che in genere richiedono intelligenza umana. Machine Learning è un subset di intelligenza artificiale che prevede l'apprendimento e l'individuazione di modelli nei dati da parte dei computer per poter eseguire stime sui nuovi dati da soli.
Perché è necessario ML.NET e come è diverso ML.NET dalle altre offerte di Intelligenza artificiale di Microsoft/Microsoft Machine Learning?
Microsoft offre molti prodotti e servizi di intelligenza artificiale e apprendimento automatico, quindi ecco il dettaglio delle differenze:
- ML.NET: consente di compilare soluzioni di apprendimento automatico personalizzate e di integrarle nelle applicazioni .NET.
- Servizi cognitivi di Azure: servizi cloud che forniscono modelli predefiniti di intelligenza artificiale e Machine Learning da aggiungere alle applicazioni. Include un set di API per l'uso di un'ampia gamma di modelli per i metodi di comunicazione naturali con visione artificiale e riconoscimento vocale.
- Azure Machine Learning: ambiente completo nel cloud per ospitare il ciclo di vita del modello di ML end-to-end, inclusi addestramento del modello, controllo delle versioni, distribuzione e gestione del rilascio su scala cloud.
In quali tipi di app è possibile distribuire i modelli ML.NET?
Puoi usare ML.NET con quasi tutte le app .NET, inclusi app e servizi Web, microservizi/contenitori, app desktop (WPF e WinForms), Funzioni di Azure e qualsiasi tipo di app lato server di Azure e app console.
Quali framework è possibile usare con ML.NET?
ML.NET è supportato in .NET, .NET Core (versione 2.0 e successive) e .NET Framework (versione 4.6.1 e successive).
Quali architetture di processo sono supportate da ML.NET?
ML.NET è attualmente supportato nei processi x64 e x86.
Quale sistema operativo è possibile usare con ML.NET?
ML.NET è multipiattaforma, quindi è supportato in Windows, Linux e macOS.
ML.NET è gratuito?
Sì! Come tutta la piattaforma .NET, ML.NET è completamente gratuito. Per altre informazioni, vedere .NET è gratuito. ML.NET è concesso in licenza con una licenza MIT.
Qual è il linguaggio di programmazione migliore per ML.NET?
ML.NET è attualmente supportato sia per C# che per F#.
Come si apprende ML.NET?
Per altre informazioni, è possibile iniziare a usare ML.NET con questo tutorial oppure consultare la nostra documentazione ML.NET per altre informazioni.
Come posso installare ML.NET?
È possibile aggiungere ML.NET a qualsiasi progetto .NET aggiungendo il pacchetto NuGet Microsoft.ML oppure è possibile iniziare a usare ML.NET Model Builder (Windows) o l'interfaccia della riga di comando di ML.NET (Windows, macOS e Linux).
Pronti per iniziare?
Questa esercitazione dettagliata ti aiuterà a ottenere ML.NET in esecuzione nel computer.