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

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# beim maschinellen Lernen?

\n

Wenn es um maschinelles Lernen (ML) geht, kommt einem als Erstes Python mit seinen Bibliotheken TensorFlow, PyTorch und scikit-learn in den Sinn. Doch das .NET-Ökosystem steht nicht still. C# ist eine leistungsstarke, typisierte Sprache, die aktiv in der Unternehmensentwicklung eingesetzt wird, und viele Unternehmen fragen sich: Kann man sie für ML-Aufgaben verwenden?

\n

In diesem Artikel analysieren wir praktisch, wie C# mit maschinellem Lernen umgeht, welche Stärken es hat und wo es Python unterlegen ist. Sie erfahren, wie Sie mit ML.NET ein einfaches Modell in C# trainieren und ob es sich lohnt, Ihre ML-Projekte auf .NET zu migrieren.

\n\n

ML.NET: Das wichtigste C#-Tool für ML

\n

Microsoft hat das Framework ML.NET entwickelt – eine offene, plattformübergreifende Bibliothek für maschinelles Lernen, die vollständig in das .NET-Ökosystem integriert ist. ML.NET ermöglicht die Lösung von Aufgaben wie Klassifikation, Regression, Clustering, Ranking sowie die Arbeit mit Bildern und Text.

\n\n

Beispiel: Vorhersage des Hauspreises

\n

Schauen wir uns an, wie echter C#-Code für eine Regressionsaufgabe aussieht. Angenommen, wir haben eine CSV-Datei mit Hausdaten (Fläche, Anzahl der Zimmer, Alter und Preis).

\n
using Microsoft.ML;\nusing Microsoft.ML.Data;\n\n// 1. Datenklassen definieren\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; } // Zielvariable\n}\n\npublic class HousePrediction\n{\n    [ColumnName("Score")]\n    public float PredictedPrice { get; set; }\n}\n\n// 2. Daten laden und trainieren\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. Modell verwenden\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($"Vorhergesagter Preis: {result.PredictedPrice:F2}");
\n

Wie Sie sehen, ist der Code lesbar, prägnant und erfordert keine komplexen Abhängigkeiten. ML.NET übernimmt automatisch Normalisierung, Kodierung kategorialer Merkmale und Kreuzvalidierung.

\n\n

Wichtige C#-Funktionen für ML

\n
    \n
  • Leistung: C# wird in Maschinencode kompiliert (über JIT oder AOT), was im Vergleich zu interpretiertem Python einen Geschwindigkeitsvorteil bringt. Für Produktionslasten kann dies entscheidend sein.
  • \n
  • Integration in das .NET-Ökosystem: Sie können ein ML-Modell problemlos in eine Webanwendung mit ASP.NET Core, eine Desktop-Anwendung mit WPF oder einen Microservice einbetten. Es ist kein separater ML-Server mit Python erforderlich.
  • \n
  • Typsicherheit: Fehler im Zusammenhang mit Datentypen werden bereits zur Kompilierzeit abgefangen, nicht erst zur Laufzeit wie in Python.
  • \n
  • ONNX-Unterstützung: ML.NET kann Modelle im ONNX-Format laden, sodass Sie in PyTorch oder TensorFlow trainierte neuronale Netze verwenden können.
  • \n
  • AutoML: Integriertes Tool zur automatischen Auswahl von Algorithmen und Hyperparametern (Klasse AutoMLExperiment).
  • \n
\n\n

Grenzen von C# für maschinelles Lernen

\n

Trotz der Vorteile kann C# in einigen Bereichen noch nicht mit Python mithalten. Betrachten wir die wichtigsten Einschränkungen.

\n\n

1. Begrenzte Auswahl an Bibliotheken

\n

Python verfügt über Dutzende ausgereifter ML-Bibliotheken: TensorFlow, PyTorch, JAX, scikit-learn, XGBoost, LightGBM. In .NET ist die Auswahl bescheidener. ML.NET ist das wichtigste Framework, und für Deep Learning gibt es TensorFlow.NET und SciSharp, aber sie

Blogs

Buchempfehlungen