Apprentissage automatique en C# (.NET) : aperçu des bibliothèques pour développeurs
Bien que Python reste le roi de l'apprentissage automatique, l'écosystème .NET propose des outils matures et puissants pour intégrer des modèles de ML dans des applications d'entreprise, des services web et des solutions de bureau. Dans cet article, nous analyserons trois bibliothèques clés pour C# : ML.NET, Accord.NET et TensorFlow.NET. Vous découvrirez laquelle choisir pour votre tâche et verrez des exemples de code.
1. ML.NET — la bibliothèque native de Microsoft
ML.NET est une bibliothèque multiplateforme open source développée spécialement pour .NET. Elle permet de créer, entraîner et déployer des modèles d'apprentissage automatique sans passer par Python. Elle prend en charge la classification, la régression, le clustering, le classement, la détection d'anomalies et même les systèmes de recommandation.
Fonctionnalités clés :
- Transformateurs de données intégrés (normalisation, encodage one-hot, extraction de caractéristiques à partir de texte et d'images).
- AutoML — sélection automatique de l'algorithme et des hyperparamètres.
- Exportation de modèles au format ONNX pour une utilisation multiplateforme.
- Prise en charge du GPU via TensorFlow et ONNX Runtime.
Exemple : classification binaire de la tonalité d'un texte
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; }}
var 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);var engine = context.Model.CreatePredictionEngine<SentimentData, SentimentPrediction>(model);
var prediction = engine.Predict(new SentimentData { Text = "This product is amazing!" });Console.WriteLine($"Prediction: {prediction.PredictedLabel}, Probability: {prediction.Probability}");Quand l'utiliser : si votre application est déjà sur .NET et que vous avez besoin d'une intégration transparente du ML sans dépendances externes.
2. Accord.NET — la bibliothèque classique pour les calculs scientifiques
Accord.NET est un ensemble de frameworks pour le traitement du signal, les statistiques et l'apprentissage automatique. Il comprend plus de 50 algorithmes : de la régression linéaire aux réseaux de neurones profonds. La bibliothèque était activement utilisée avant l'arrivée de ML.NET et reste demandée pour les tâches nécessitant un réglage fin.
Fonctionnalités clés :
- Modèles flexibles : SVM, Random Forest, K-Means, modèles de Markov cachés.
- Méthodes intégrées de traitement d'images et d'audio (filtres, détecteurs de contours, FFT).
- Prise en charge des méthodes à noyau et des modèles probabilistes.
- Intégration avec Math.NET Numerics pour des opérations mathématiques avancées.
Exemple : entraînement d'un SVM pour la classification des iris
using Accord.MachineLearning.VectorMachines;using Accord.MachineLearning.VectorMachines.Learning;using Accord.Statistics.Kernels;
// Chargement des données (ensemble classique Iris)double[][] inputs = // ... matrice de caractéristiques (4 colonnes)int[] outputs = // ... étiquettes de classes (0,1,2)
var teacher = new MulticlassSupportVectorLearning<Gaussian>(){ Learner = (param) => new SequentialMinimalOptimization<Gaussian>() { Complexity = 100, Tolerance = 1e-5 }};
var machine = teacher.Learn(inputs, outputs);int[] predicted = machine.Decide(inputs);
double error = new ZeroOneLoss(outputs).Loss(predicted);Console.WriteLine($"Erreur : {error:P}");Quand l'utiliser : si vous avez besoin d'algorithmes classiques avec un contrôle fin des paramètres et des capacités de traitement de signal intégrées.