C# für maschinelles Lernen: Möglichkeiten und Grenzen

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Einleitung: Warum C# in der Welt des maschinellen Lernens?

Die Welt des maschinellen Lernens (ML) wird stark mit Python, R und Julia assoziiert. Entwickler, die C# und die .NET-Plattform verwenden, fragen sich jedoch oft: Kann eine vertraute Sprache verwendet werden, um intelligente Systeme zu erstellen? Die Antwort lautet ja, aber mit Einschränkungen. C# ist keine gängige Wahl für Data Science, dennoch bietet das .NET-Ökosystem leistungsstarke Werkzeuge wie ML.NET, TensorFlow.NET und die Integration mit ONNX. In diesem Artikel werden wir untersuchen, welche Fähigkeiten C# für ML bietet, wo sein Einsatz gerechtfertigt ist und wo es besser ist, auf Python zurückzugreifen.



Fähigkeiten von C# für maschinelles Lernen

1. ML.NET — Nativer Framework von Microsoft

ML.NET ist ein plattformübergreifendes Open-Source-Framework für maschinelles Lernen, das speziell für das .NET-Ökosystem entwickelt wurde. Es ermöglicht die Einbettung von ML-Modellen in C#- und F#-Anwendungen, ohne Python lernen zu müssen. ML.NET unterstützt:

  • Klassifikation und Regression (z. B. Stimmungsanalyse, Preisvorhersage).
  • Clustering und Ranking.
  • Empfehlungssysteme und Anomalieerkennung.
  • Bildverarbeitung (über Integration mit TensorFlow).

Beispiel für das einfache Training eines Textstimmungsklassifikationsmodells:

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 = "Это отличный продукт!" });Console.WriteLine(prediction.PredictedLabel); // True (положительная тональность)

ML.NET eignet sich hervorragend für die Integration von ML in Unternehmens-.NET-Anwendungen wie CRM, ERP oder Webdienste auf ASP.NET Core.



2. Integration mit TensorFlow und ONNX

C# kann mit vortrainierten Modellen aus der Python-Welt über die Formate TensorFlow und ONNX arbeiten. Dies ermöglicht die Verwendung leistungsstarker neuronaler Netze (z. B. ResNet, BERT) direkt in .NET-Anwendungen.

Beispiel für das Laden eines ONNX-Modells zur Bilderkennung:

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()}");

Somit können Sie Modelle in Python trainieren und in der Produktion mit C# bereitstellen.



3. Leistung und Typsicherheit

C# ist eine kompilierte Sprache mit JIT-Kompilierung (oder AOT via Native AOT). Es bietet:

  • Hohe Leistung — für Aufgaben, bei denen die Inferenzgeschwindigkeit entscheidend ist (z. B. Echtzeitsysteme).
  • Starke Typisierung — weniger Laufzeitfehler, was für Unternehmens-ML-Lösungen entscheidend ist.
  • Asynchronie und Multithreading — integrierte Unterstützung für async/await und die Task Parallel Library (TPL) zur Verarbeitung großer Datenmengen.


4. Data-Science-Tools in Visual Studio

Verfügbar für C#:

Blogs

Buchempfehlungen