Apprentissage automatique en C# (.NET) : aperçu des bibliothèques ML.NET, Accord.NET, TensorFlow.NET

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Apprentissage automatique en C# (.NET) : aperçu des bibliothèques clés

Bien que Python soit traditionnellement considéré comme le langage principal pour l'apprentissage automatique, l'écosystème C# (.NET) propose également des outils puissants et matures pour construire des modèles de ML. Si votre infrastructure est basée sur la stack Microsoft, ou si vous préférez le typage statique et des performances élevées, les bibliothèques pour .NET vous aideront à intégrer l'intelligence artificielle sans changer de stack technologique. Dans cet article, nous examinerons trois bibliothèques principales : ML.NET, Accord.NET et TensorFlow.NET, et fournirons des exemples pratiques de code.



1. ML.NET — la bibliothèque officielle de Microsoft

ML.NET est une bibliothèque d'apprentissage automatique multiplateforme et open source, créée spécialement pour les développeurs .NET. Elle permet d'intégrer le ML dans des applications sans avoir besoin d'apprendre Python ou R. ML.NET prend en charge la classification, la régression, le clustering, le classement, la détection d'anomalies et même l'apprentissage profond via l'intégration avec ONNX et TensorFlow.



Fonctionnalités clés :

  • Transformateurs intégrés pour la préparation des données (normalisation, encodage, concaténation).
  • Sélection automatique de modèle (AutoML) via AutoML.NET.
  • Export du modèle au format ONNX pour une utilisation ultérieure sur d'autres plateformes.
  • Prise en charge de l'apprentissage sur de grands volumes de données via IDataView.


Exemple : classification binaire d'avis (analyse de sentiment)

using Microsoft.ML;using Microsoft.ML.Data;

public class SentimentData{ public string Text { get; set; } public bool Label { get; set; }}

public class SentimentPrediction{ public bool PredictedLabel { get; set; } public float Probability { get; set; }}

// Chargement des données et apprentissagevar context = new MLContext();var data = context.Data.LoadFromTextFile<SentimentData>("data.csv", separatorChar: ',');var pipeline = context.Transforms.Text.FeaturizeText("Features", nameof(SentimentData.Text)) .Append(context.BinaryClassification.Trainers.SdcaLogisticRegression());var model = pipeline.Fit(data);

// Prédictionvar predictionEngine = context.Model.CreatePredictionEngine<SentimentData, SentimentPrediction>(model);var prediction = predictionEngine.Predict(new SentimentData { Text = "This product is amazing!" });Console.WriteLine($"Positive: {prediction.PredictedLabel}, Confidence: {prediction.Probability:P}");

Ce code montre comment, en quelques lignes, entraîner un modèle sur un fichier CSV et faire une prédiction. ML.NET gère automatiquement les types de données et crée un pipeline.



2. Accord.NET — le framework classique pour le calcul scientifique

Accord.NET est un ensemble de bibliothèques pour le traitement du signal, les statistiques et l'apprentissage automatique. Il comprend plus de 40 algorithmes : des SVM et réseaux de neurones aux modèles de Markov cachés. La bibliothèque est activement utilisée dans le milieu académique et l'industrie depuis 2010. Contrairement à ML.NET, Accord.NET offre un contrôle de plus bas niveau sur les algorithmes.



Fonctionnalités clés :

  • Large choix de classifieurs : KNN, NaiveBayes, RandomForest, SVM.
  • Méthodes de prétraitement intégrées : PCA, LDA, normalisation.
  • Prise en charge des réseaux de neurones (Deep Learning Toolkit).
  • Intégration avec Math.NET pour les opérations mathématiques complexes.


Exemple : classification des iris de Fisher avec KNN

using Accord.MachineLearning;using Accord.MachineLearning.VectorMachines;using Accord.Statistics.Analysis;

// Chargement des données (ensemble classique Iris)double[][] inputs = new double[][]{ new double[] { 5.1, 3.5, 1.4, 0.2 }, new double[] { 4.9, 3.0, 1.4, 0.2 }, // ... reste

Recommendations