Maschinelles Lernen mit C# (.NET): Überblick über die wichtigsten Bibliotheken
Obwohl Python traditionell als die Hauptsprache für maschinelles Lernen (ML) gilt, bietet das C# (.NET)-Ökosystem leistungsstarke und ausgereifte Lösungen für die Integration von ML-Modellen in Unternehmensanwendungen, Webdienste und Desktop-Programme. In diesem Artikel betrachten wir die führenden Bibliotheken, die für C#-Entwickler verfügbar sind, ihre Funktionen, Anwendungsbeispiele und Einsatzszenarien.
1. ML.NET — Offizielle Bibliothek von Microsoft
ML.NET ist eine plattformübergreifende, offene und kostenlose Bibliothek für maschinelles Lernen, die von Microsoft entwickelt wurde. Sie ermöglicht es, ML-Modelle direkt in .NET-Anwendungen zu erstellen, zu trainieren und zu verwenden, ohne auf Python oder andere Sprachen wechseln zu müssen.
Hauptfunktionen:
- Unterstützung klassischer Algorithmen: Regression, Klassifikation, Clustering, Ranking.
- Deep Learning durch Integration mit TensorFlow und ONNX.
- Automatisches maschinelles Lernen (AutoML) zur Auswahl des optimalen Modells.
- Integrierte Datenverarbeitungspipelines (Transformationen, Normalisierung).
- Integration mit Visual Studio (Model Builder-Erweiterung).
Beispiel: Binäre Klassifikation (Stimmungsanalyse von Text)
using Microsoft.ML;using Microsoft.ML.Data;
public class SentimentData{ public string SentimentText { get; set; } public bool Label { get; set; }}
public class SentimentPrediction{ public bool PredictedLabel { get; set; } public float Probability { get; set; }}
var context = new MLContext();// Daten ladenIDataView data = context.Data.LoadFromTextFile<SentimentData>("data.tsv", separatorChar: '\\t');// Pipeline: Text-Featurisierung + Trainingvar pipeline = context.Transforms.Text.FeaturizeText("Features", nameof(SentimentData.SentimentText)) .Append(context.BinaryClassification.Trainers.SdcaLogisticRegression());// Trainingvar model = pipeline.Fit(data);// Verwendungvar engine = context.Model.CreatePredictionEngine<SentimentData, SentimentPrediction>(model);var prediction = engine.Predict(new SentimentData { SentimentText = "This is great!" });Console.WriteLine($"Predicted: {prediction.PredictedLabel}, Probability: {prediction.Probability}");2. Accord.NET — Wissenschaftliches Rechnen
Accord.NET ist eine leistungsstarke Bibliothek, die nicht nur ML-Algorithmen, sondern auch Werkzeuge für Signalverarbeitung, Statistik, Computer Vision und neuronale Netze bereitstellt. Sie gilt als eine der umfassendsten Lösungen für .NET.
Hauptfunktionen:
- Breite Auswahl an Algorithmen: SVM, Random Forest, K-Means, Naive Bayes.
- Tiefe neuronale Netze (Accord.Neuro).
- Bild- und Videoverarbeitung (Accord.Imaging).
- Statistische Tests und Verteilungen.
Beispiel: Training eines SVM-Klassifikators
using Accord.MachineLearning.VectorMachines;using Accord.MachineLearning.VectorMachines.Learning;using Accord.Statistics.Kernels;
// Trainingsdaten (Merkmale: zwei Zahlen)double[][] inputs = { new double[] { 0, 0 }, new double[] { 1, 1 }, new double[] { 1, 0 }, new double[] { 0, 1 }};int[] outputs = { 0, 1, 1, 0 };
// Erstellen und Trainieren einer SVM mit Gauß-Kernelvar teacher = new SequentialMinimalOptimization<Gaussian>(){ Complexity = 100};var svm = teacher.Learn(inputs, outputs);
// Vorhersageint prediction = svm.Decide(new double[] { 0.8, 0.2 });Console.WriteLine($"Predicted class: {prediction}");3. TensorFlow.NET — .NET-Bindungen an TensorFlow
TensorFlow.NET (SciSharp) sind die offiziellen Low-Level-Bindungen an TensorFlow für .NET. Die Bibliothek ermöglicht Tensoroperationen, das Erstellen und Trainieren neuronaler Netze sowie das Laden
Auch in der Bibliothek
TipKit für Swift: Vollständiges Tutorial mit Beispielen
Objektserialisierung in Java: Vollständiger Leitfaden für Anfänger
Elasticsearch-Client für Rust: Überblick über die Bibliothek elasticsearch-rs
Vision für Swift: Komplettleitfaden mit Beispielen