Maschinelles Lernen mit C# (.NET): Überblick über Bibliotheken für Entwickler
Obwohl Python der König des maschinellen Lernens bleibt, bietet das .NET-Ökosystem ausgereifte und leistungsstarke Werkzeuge zur Integration von ML-Modellen in Unternehmensanwendungen, Webdienste und Desktop-Lösungen. In diesem Artikel betrachten wir drei Schlüsselbibliotheken für C#: ML.NET, Accord.NET und TensorFlow.NET. Sie erfahren, welche Sie für Ihre Aufgabe wählen sollten, und sehen Codebeispiele.
1. ML.NET – native Bibliothek von Microsoft
ML.NET ist eine plattformübergreifende Open-Source-Bibliothek, die speziell für .NET entwickelt wurde. Sie ermöglicht das Erstellen, Trainieren und Bereitstellen von Modellen für maschinelles Lernen, ohne auf Python umsteigen zu müssen. Unterstützt werden Klassifikation, Regression, Clustering, Ranking, Anomalieerkennung und sogar Empfehlungssysteme.
Schlüsselfunktionen:
- Integrierte Datentransformer (Normalisierung, One-Hot-Kodierung, Merkmalsextraktion aus Text und Bildern).
- AutoML – automatische Auswahl von Algorithmus und Hyperparametern.
- Export von Modellen in ONNX für plattformübergreifende Nutzung.
- GPU-Unterstützung über TensorFlow und ONNX Runtime.
Beispiel: Binäre Klassifikation der Textstimmung
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}");Wann verwenden: Wenn Ihre Anwendung bereits auf .NET basiert und Sie eine nahtlose ML-Integration ohne externe Abhängigkeiten benötigen.
2. Accord.NET – klassische Bibliothek für wissenschaftliche Berechnungen
Accord.NET ist eine Sammlung von Frameworks für Signalverarbeitung, Statistik und maschinelles Lernen. Es umfasst über 50 Algorithmen: von linearer Regression bis zu tiefen neuronalen Netzen. Die Bibliothek wurde vor dem Aufkommen von ML.NET intensiv genutzt und ist immer noch gefragt für Aufgaben, die eine Feinabstimmung erfordern.
Schlüsselfunktionen:
- Flexible Modelle: SVM, Random Forest, K-Means, Hidden Markov Models.
- Integrierte Methoden zur Bild- und Audioverarbeitung (Filter, Kantendetektoren, FFT).
- Unterstützung von Kernmethoden und probabilistischen Modellen.
- Integration mit Math.NET Numerics für fortgeschrittene mathematische Operationen.
Beispiel: SVM-Training zur Klassifikation von Iris
using Accord.MachineLearning.VectorMachines;using Accord.MachineLearning.VectorMachines.Learning;using Accord.Statistics.Kernels;
// Daten laden (klassischer Iris-Datensatz)double[][] inputs = // ... Merkmalsmatrix (4 Spalten)int[] outputs = // ... Klassenlabels (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($"Fehler: {error:P}");Wann verwenden: Wenn Sie eine breite Palette von Algorithmen benötigen und eine detaillierte Kontrolle über die Modelle wünschen.