Qu’est-ce que ML.NET ?
ML.NET est un framework machine learning gratuit, open source et multiplateforme, créé par Microsoft, pour la plateforme de développement .NET.
ML.NET
ML.NET est une infrastructure de Machine Learning gratuit, open source et multiplateforme pour la plateforme de développement .NET.
ML.NET vous permet de former, de créer et d'expédier des modèles d'apprentissage automatique personnalisés à l'aide de C# ou F# pour une variété de scénarios ML. ML.NET inclut des fonctionnalités telles que l'apprentissage automatique automatisé (AutoML) et des outils tels que ML.NET CLI et ML.NET Model Builder, qui facilite encore plus l'intégration machine learning dans vos applications.
ML.NET pas à pas
ML.NET suit les mêmes étapes de base pour presque tous les scénarios ; il combine le chargement des données, les transformations et l’entraînement des modèles pour vous permettre de créer facilement des modèles Machine Learning.
Créer le contexte ML.NET
MLContext est le point de départ de toutes les opérations ML.NET. Le MLContext
est utilisé pour tous les aspects de la création et de la consommation d’un modèle ML.NET. D’un point de vue conceptuel, il est similaire à DbContext
dans Entity Framework.
var mlContext = new MLContext();
Une fois que vous avez une instance d'un MLContext
, vous pouvez charger et transformer des données, choisir le meilleur algorithme pour votre tâche d'apprentissage automatique, former votre modèle. Une fois formé, vous pouvez tester la précision de votre modèle, l'enregistrer sur le disque et l'utiliser pour faire des prédictions. Un MLContext
peut être initialisé à partir d'un modèle préalablement enregistré sur le disque.
Charger des données
L'apprentissage automatique utilise des données connues (par exemple, des données d'apprentissage) pour trouver des modèles afin de faire des prédictions sur de nouvelles données inconnues.
Les entrées pour le Machine Learning sont appelées Fonctionnalités, qui sont les attributs utilisés pour effectuer des prédictions. La sortie du Machine Learning est appelée Étiquette, qui est la prédiction réelle.
Les données dans ML.NET sont représentées sous la forme d’un IDataView, qui est un moyen flexible et efficace de décrire les données tabulaires (par exemple, les lignes et les colonnes). Les objets IDataView peuvent contenir des nombres, du texte, des booléens, des vecteurs, etc. Vous pouvez charger des données à partir de fichiers ou de sources de diffusion en continu en temps réel vers un IDataView.
LoadFromTextFile
vous permet de charger des données à partir de formats de fichiers TXT, CSV, TSV et autres.
IDataView trainingData = mlContext.Data
.LoadFromTextFile<SentimentInput>(dataPath, separatorChar: ',', hasHeader: true);
LoadFromEnumerable
permet le chargement à partir de collections en mémoire, de bases de données JSON/XML, relationnelles et non relationnelles (par exemple, SQL, CosmosDB, MongoDB) et de nombreuses autres sources de données.
IDataView trainingData = mlContext.Data
.LoadFromEnumerable<SentimentInput>(inMemoryCollection);
Transformer les données
Dans la plupart des cas, les données que vous avez disponibles ne conviennent pas pour être utilisées directement pour entraîner un modèle Machine Learning. Les données brutes doivent être pré-traitées à l’aide de transformations de données.
Les transformateurs prennent des données, effectuent des tâches sur celles-ci et retournent de nouvelles données transformées.
Il existe un ensemble intégré de transformations de données pour remplacer les valeurs manquantes, la conversion de données, la mise en valeur du texte, etc.
// Convert sentiment text into numeric features
IEstimator<ITransformer> dataTransformPipeline = mlContext.Transforms.Text
.FeaturizeText("Features", "SentimentText");
Choisir l'algorithme
Lorsque vous utilisez l'apprentissage automatique et ML.NET, vous devez choisir une tâche d'apprentissage automatique qui accompagne votre scénario. ML.NET propose plus de 30 algorithmes (ou entraîneurs) pour une variété de tâches de ML :
Tâche ML | Algorithmes |
---|---|
Classification binaire (par exemple, analyse des sentiments) | AveragedPerceptronTrainer, SdcaLogisticRegressionBinaryTrainer |
Classification multiclasse (par exemple, catégorisation de rubrique) | LightGbmMulticlassTrainer, OneVersusAllTrainer |
Régression (par exemple, prédiction de prix) | LbfgsPoissonRegressionTrainer, FastTreeRegressionTrainer |
Clustering (par exemple, segmentation du client) | KMeansTrainer |
Détection d'anomalies (par exemple, détection des pics de ventes de shampoing) | RandomizedPcaTrainer |
Recommandation (par exemple, recommandation de film) | MatrixFactorizationTrainer |
Classement (par exemple, résultats de la recherche) | LightGbmRankingTrainer, FastTreeRankingTrainer |
IEstimator<ITransformer> trainer = mlContext.BinaryClassification.Trainers
.AveragedPerceptron(labelColumnName: "Sentiment", featureColumnName: "Features"));
IEstimator<ITransformer> trainingPipeline = dataTransformPipeline.Append(trainer);
Entraîner un modèle
Les transformations de données et les algorithmes que vous avez spécifiés ne sont pas exécutés tant que vous n’avez pas appelé la méthode Fit()
(en raison de l’approche de chargement différé de ML.NET). C’est à ce moment-là que l’entraînement du modèle se produit.
Un estimateur prend des données, apprend des données et crée un transformateur. Dans le cas de l’entraînement du modèle, les données d’entraînement sont l’entrée et le modèle entraîné est la sortie ; le modèle entraîné est donc un transformateur qui transforme les fonctionnalités d’entrée des nouvelles données en prédictions de sortie.
ITransformer model = pipeline.Fit(trainingData);
Évaluer le modèle
ML.NET propose des évaluateurs qui évaluent les performances de votre modèle sur une variété de métriques :
- Justesse
- Zone sous la courbe (AUC)
- R-Squared
- Erreur quadratique moyenne racine (RMSE)
// 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);
Déployer & utiliser le modèle
Vous pouvez enregistrer votre modèle formé en tant que fichier binaire qui est ensuite intégré dans vos applications .NET.
mlContext.Model.Save(model, trainingData, "model.zip");
Une fois que vous avez enregistré le modèle de formation, vous pouvez charger le modèle dans vos autres applications .NET.
MLContext mlContext = new MLContext();
DataViewSchema predictionPipelineSchema;
ITransformer trainedModel = mlContext.Model.Load("model.zip", out predictionPipelineSchema);
Vous pouvez ensuite utiliser le modèle chargé pour commencer à faire des prédictions. Vous pouvez utiliser le Moteur de prédiction, qui est une API pratique utilisée pour faire des prédictions uniques, ou le Méthode de transformation, qui est utilisée pour faire des prédictions par lots.
var predEngine = mlContext.Model.CreatePredictionEngine(model);
SentimentInput sampleComment = new SentimentInput{ SentimentText = "This is very rude!" };
SentimentOutput result = predEngine.Predict(sampleComment);
Console.WriteLine(result.Prediction);
FAQ ML.NET
À quoi sert ML.NET ?
ML.NET est une infrastructure d’apprentissage automatique pour les développeurs .NET ; vous pouvez utiliser ML.NET pour intégrer des modèles Machine Learning personnalisés dans vos applications .NET. Vous pouvez utiliser ML.NET pour de nombreux scénarios, tels que l’analyse des sentiments, la prédiction des prix, la recommandation de produit, la prévision des ventes, la classification d’images, la détection d’objets, etc. Consultez notre référentiels d’exemples pour plus d’exemples de ce que vous pouvez faire avec ML.NET.
Quelle est la différence entre l'IA et l'apprentissage automatique ?
L'IA est une branche de l'informatique qui consiste à former des ordinateurs à faire des choses qui nécessitent normalement l'intelligence humaine. L'apprentissage automatique est un sous-ensemble de l'IA qui implique que les ordinateurs apprennent et trouvent des modèles dans les données afin de pouvoir ensuite faire des prédictions sur de nouvelles données par eux-mêmes.
Pourquoi ai-je besoin de ML.NET et en quoi ML.NET est-il différent des autres offres d’IA/ML de Microsoft ?
Microsoft propose de nombreux produits et services d'IA et de ML, voici donc une ventilation des différences entre eux :
- ML.NET : Créez des solutions d’apprentissage automatique personnalisées et intégrez-les à vos applications .NET.
- Les services cloudAzure Cognitive Services : qui fournissent des modèles d’intelligence artificielle et Machine Learning prédéfini à ajouter à vos applications. Inclut un ensemble d’API permettant d’utiliser divers modèles pour les méthodes de communication naturelles avec la vision et la voix.
- Azure Machine Learning : environnement complet dans le cloud pour héberger le cycle de vie de votre modèle ML de bout en bout, y compris la formation du modèle, la gestion des versions, le déploiement et la publication gestion à l'échelle du cloud.
Sur quels types d'applications puis-je déployer des modèles ML.NET ?
Vous pouvez utiliser ML.NET avec presque toutes les applications .NET, y compris les applications et services Web, les microservices/conteneurs, les applications de bureau (WPF et WinForms), Azure Functions et tout type d'application côté serveur Azure et les applications de console.
Quelles infrastructures puis-je utiliser avec ML.NET ?
ML.NET est pris en charge sur .NET, .NET Core (version 2.0 et ultérieure) et .NET Framework (version 4.6.1 et ultérieure).
Quelles sont les architectures de processus prises en charge par ML.NET ?
ML.NET est actuellement pris en charge sur les processus x64 et x86.
Quel système d’exploitation puis-je utiliser avec ML.NET ?
ML.NET est multiplateforme, il est donc pris en charge sur Windows, Linux et macOS.
ML.NET est-il gratuit ?
Oui ! Comme pour le reste de la plateforme .NET, ML.NET est gratuit à 100 %. Pour plus d’informations, consultez .NET est gratuit. ML.NET est concédé sous licence sous la licence MIT.
Quel est le meilleur langage de programmation pour ML.NET ?
ML.NET est actuellement pris en charge pour C# et F#.
Comment puis-je apprendre ML.NET ?
Vous pouvez démarrer avec ML.NET avec ce tutoriel, ou vous pouvez consulter notre Documents ML.NET pour en savoir plus.
Comment puis-je installer ML.NET ?
Vous pouvez ajouter des ML.NET à n’importe quel projet .NET en ajoutant le Microsoft.ML package NuGet, ou bien vous pouvez commencer avec ML.NET Model Builder (Windows) ou l’interface CLI ML.NET (Windows, macOS et Linux).
Prêt à démarrer ?
Notre tutoriel étape par étape vous aidera à démarrer ML.NET sur votre ordinateur.