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

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 l'apprentissage automatique ?

\n

Lorsqu'il s'agit d'apprentissage automatique (ML), le premier langage qui vient à l'esprit est Python avec ses bibliothèques TensorFlow, PyTorch et scikit-learn. Cependant, l'écosystème .NET ne reste pas immobile. C# est un langage puissant et typé, activement utilisé dans le développement d'entreprise, et de nombreuses entreprises se demandent : peut-on l'utiliser pour des tâches de ML ?

\n

Dans cet article, nous analyserons concrètement comment C# gère l'apprentissage automatique, quels sont ses points forts et où il est inférieur à Python. Vous apprendrez à entraîner un modèle simple en C# avec ML.NET et s'il vaut la peine de migrer vos projets ML vers .NET.

\n\n

ML.NET : l'outil principal de C# pour le ML

\n

Microsoft a développé le framework ML.NET — une bibliothèque open source et multiplateforme pour l'apprentissage automatique, entièrement intégrée à l'écosystème .NET. ML.NET permet de résoudre des problèmes de classification, régression, clustering, classement, ainsi que de travailler avec des images et du texte.

\n\n

Exemple : prédiction du prix d'une maison

\n

Voyons à quoi ressemble un code C# réel pour une tâche de régression. Supposons que nous ayons un fichier CSV avec des données sur les maisons (surface, nombre de pièces, âge et prix).

\n
using Microsoft.ML;\nusing Microsoft.ML.Data;\n\n// 1. Définition des classes de données\npublic class HouseData\n{\n    public float Square { get; set; }\n    public float Rooms { get; set; }\n    public float Age { get; set; }\n    public float Price { get; set; } // Variable cible\n}\n\npublic class HousePrediction\n{\n    [ColumnName("Score")]\n    public float PredictedPrice { get; set; }\n}\n\n// 2. Chargement des données et entraînement\nvar context = new MLContext();\nIDataView data = context.Data.LoadFromTextFile<HouseData>("house_data.csv", separatorChar: ',');\n\nvar pipeline = context.Transforms.Concatenate("Features", "Square", "Rooms", "Age")\n    .Append(context.Regression.Trainers.Sdca(labelColumnName: "Price", maximumNumberOfIterations: 100));\n\nvar model = pipeline.Fit(data);\n\n// 3. Utilisation du modèle\nvar sampleData = new HouseData { Square = 120, Rooms = 3, Age = 10 };\nvar predictionEngine = context.Model.CreatePredictionEngine<HouseData, HousePrediction>(model);\nvar result = predictionEngine.Predict(sampleData);\n\nConsole.WriteLine($"Prix prédit : {result.PredictedPrice:F2}");
\n

Comme vous pouvez le voir, le code est lisible, concis et ne nécessite pas de dépendances complexes. ML.NET gère automatiquement la normalisation, l'encodage des caractéristiques catégorielles et la validation croisée.

\n\n

Principales capacités de C# en ML

\n
    \n
  • Performance : C# est compilé en code machine (via JIT ou AOT), ce qui offre un gain de vitesse par rapport à Python interprété. Pour les charges de production, cela peut être crucial.
  • \n
  • Intégration avec l'écosystème .NET : Vous pouvez facilement intégrer un modèle ML dans une application web ASP.NET Core, une application de bureau WPF ou un microservice. Pas besoin de déployer un serveur ML séparé en Python.
  • \n
  • Sécurité des types : Les erreurs liées aux types de données sont détectées à la compilation, et non à l'exécution comme en Python.
  • \n
  • Support ONNX : ML.NET peut charger des modèles au format ONNX, permettant d'utiliser des réseaux de neurones entraînés avec PyTorch ou TensorFlow.
  • \n
  • AutoML : Outil intégré pour la sélection automatique d'algorithmes et d'hyperparamètres (classe AutoMLExperiment).
  • \n
\n\n

Limites de C# pour l'apprentissage automatique

\n

Malgré ses avantages, C# ne peut pas encore concurrencer Python dans plusieurs domaines. Examinons les principales limitations.

\n\n

1. Choix limité de bibliothèques

\n

Python dispose de dizaines de bibliothèques matures pour le ML : TensorFlow, PyTorch, JAX, scikit-learn, XGBoost, LightGBM. Dans .NET, le choix est plus restreint. ML.NET est le framework principal, et pour l'apprentissage profond, il existe TensorFlow.NET et SciSharp, mais ils

Blogs

Book Recommendations