C# pour l'apprentissage automatique : possibilités et limites

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

Introduction : Pourquoi C# dans le monde du machine learning ?

Le monde du machine learning (ML) est fortement associé à Python, R et Julia. Cependant, les développeurs C# et de la plateforme .NET se demandent souvent : peut-on utiliser un langage familier pour créer des systèmes intelligents ? La réponse est oui, mais avec des réserves. C# n'est pas un choix mainstream pour la Data Science, mais l'écosystème .NET propose des outils puissants comme ML.NET, TensorFlow.NET et l'intégration avec ONNX. Dans cet article, nous allons voir quelles possibilités C# offre pour le ML, où son utilisation est justifiée, et où il est préférable de se tourner vers Python.



Possibilités de C# pour le machine learning

1. ML.NET — le framework natif de Microsoft

ML.NET est un framework de machine learning multiplateforme et open source, développé spécialement pour l'écosystème .NET. Il permet d'intégrer des modèles ML dans des applications en C# et F# sans avoir besoin d'apprendre Python. ML.NET prend en charge :

  • La classification et la régression (par exemple, l'analyse de sentiment, la prévision de prix).
  • Le clustering et le classement.
  • Les systèmes de recommandation et la détection d'anomalies.
  • Le traitement d'images (via l'intégration avec TensorFlow).

Exemple d'apprentissage simple d'un modèle de classification de sentiment de 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; }}

var context = new MLContext();var data = context.Data.LoadFromTextFile<SentimentData>("data.csv", separatorChar: ',');var pipeline = context.Transforms.Text.FeaturizeText("Features", "Text") .Append(context.BinaryClassification.Trainers.SdcaLogisticRegression());var model = pipeline.Fit(data);var predictionEngine = context.Model.CreatePredictionEngine<SentimentData, SentimentPrediction>(model);var prediction = predictionEngine.Predict(new SentimentData { Text = "C'est un excellent produit !" });Console.WriteLine(prediction.PredictedLabel); // True (sentiment positif)

ML.NET est parfaitement adapté pour intégrer le ML dans des applications .NET d'entreprise, telles que les CRM, ERP ou services web sur ASP.NET Core.



2. Intégration avec TensorFlow et ONNX

C# peut fonctionner avec des modèles pré-entraînés du monde Python via les formats TensorFlow et ONNX. Cela permet d'utiliser des réseaux de neurones puissants (par exemple, ResNet, BERT) directement dans des applications .NET.

Exemple de chargement d'un modèle ONNX pour la reconnaissance d'images :

using Microsoft.ML.OnnxRuntime;using Microsoft.ML.OnnxRuntime.Tensors;

var session = new InferenceSession("model.onnx");var input = new DenseTensor<float>(new float[1 * 3 * 224 * 224], new[] { 1, 3, 224, 224 });var inputs = new List<NamedOnnxValue>{ NamedOnnxValue.CreateFromTensor("input", input)};using var results = session.Run(inputs);var output = results.First().AsTensor<float>();Console.WriteLine($"Predicted class index: {output.ArgMax()}");

Ainsi, vous pouvez entraîner des modèles en Python et les déployer en production en C#.



3. Performance et sécurité de type

C# est un langage compilé avec compilation JIT (ou AOT via Native AOT). Il offre :

  • Une haute performance — pour les tâches où la vitesse d'exécution de l'inférence est importante (par exemple, les systèmes en temps réel).
  • Un typage fort — moins d'erreurs d'exécution, ce qui est crucial pour les solutions ML d'entreprise.
  • L'asynchronisme et le multithreading — prise en charge intégrée de async/await et de la Task Parallel Library (TPL) pour le traitement de grandes données.


4. Outils pour la Data Science dans Visual Studio

Pour C#, les éléments suivants sont disponibles :

Blogs

Book Recommendations