ANFRAGE
Einführung in ML.NET: Ein einfaches Beispiel für maschinelles Lernen in C#

SOFTWARE & KI

ML.NET ist ein leistungsfähiges Open-Source-Framework von Microsoft, das es .NET-Entwicklern ermöglicht, maschinelles Lernen in ihre Anwendungen zu integrieren. In diesem Blogpost werden wir ein einfaches Beispiel für die Verwendung von ML.NET in C# durchgehen.

Was ist ML.NET?

ML.NET ist ein Framework für maschinelles Lernen, das speziell für .NET-Entwickler konzipiert wurde. Es ermöglicht die Erstellung und Verwendung von Machine-Learning-Modellen direkt in C#-Anwendungen, ohne dass man auf externe Tools oder Sprachen zurückgreifen muss1.

Unser Beispiel: Sentiment-Analyse

Für dieses Beispiel werden wir eine Sentiment-Analyse durchführen. Wir werden ein Modell trainieren, das die Stimmung (positiv oder negativ) eines gegebenen Textes vorhersagen kann.

Schritt 1: Projekt einrichten

Zuerst erstellen wir ein neues Konsolenprojekt in Visual Studio und fügen das ML.NET NuGet-Paket hinzu

dotnet new console -n SentimentAnalysis
cd SentimentAnalysis
dotnet add package Microsoft.ML

Schritt 2: Datenmodelle definieren

Wir definieren zwei Klassen: eine für die Eingabedaten und eine für die Vorhersage

public class SentimentData
{
    [LoadColumn(0)]
    public string Text;

    [LoadColumn(1), ColumnName("Label")]
    public bool Sentiment;
}

public class SentimentPrediction : SentimentData
{
    [ColumnName("PredictedLabel")]
    public bool Prediction { get; set; }
    public float Probability { get; set; }
    public float Score { get; set; }
}

Schritt 3: Daten laden und Modell trainieren

Nun laden wir die Trainingsdaten und erstellen unser Modell

var mlContext = new MLContext();

// Daten laden
var dataView = mlContext.Data.LoadFromTextFile<SentimentData>("sentiment_data.txt");

// Daten aufteilen
var splitDataView = mlContext.Data.TrainTestSplit(dataView, testFraction: 0.2);

// Pipeline erstellen
var pipeline = mlContext.Transforms.Text.FeaturizeText(outputColumnName: "Features", inputColumnName: nameof(SentimentData.Text))
    .Append(mlContext.BinaryClassification.Trainers.SdcaLogisticRegression(labelColumnName: "Label", featureColumnName: "Features"));

// Modell trainieren
var model = pipeline.Fit(splitDataView.TrainSet);

Schritt 4: Modell evaluieren

Wir evaluieren unser Modell mit den Testdaten

var predictions = model.Transform(splitDataView.TestSet);
var metrics = mlContext.BinaryClassification.Evaluate(predictions);

Console.WriteLine($"Accuracy: {metrics.Accuracy:P2}");
Console.WriteLine($"F1 Score: {metrics.F1Score:P2}");

Schritt 5: Vorhersagen machen

Schließlich können wir unser Modell verwenden, um Vorhersagen zu treffen

var predictionEngine = mlContext.Model.CreatePredictionEngine<SentimentData, SentimentPrediction>(model);

var sampleStatement = new SentimentData
{
    Text = "This restaurant was wonderful."
};

var resultPrediction = predictionEngine.Predict(sampleStatement);

Console.WriteLine($"Prediction: {(resultPrediction.Prediction ? "Positive" : "Negative")}");
Console.WriteLine($"Probability: {resultPrediction.Probability:P2}");

Fazit

Dieses einfache Beispiel zeigt, wie man mit ML.NET schnell und einfach ein Sentiment-Analyse-Modell in C# erstellen kann. ML.NET bietet eine Vielzahl von Möglichkeiten für maschinelles Lernen in .NET-Anwendungen, von der Datenverarbeitung über das Training bis hin zur Modellevaluierung und -verwendung.

Mit ML.NET können .NET-Entwickler maschinelles Lernen nahtlos in ihre bestehenden Anwendungen integrieren, ohne zusätzliche Programmiersprachen oder Frameworks erlernen zu müssen. Dies eröffnet neue Möglichkeiten für intelligente Anwendungen in der .NET-Welt.