Machine Learning (ML) to obecnie jeden z najgorętszych trendów w IT. O ile wiele osób kojarzy uczenie maszynowe z językami takimi jak Python, o tyle warto pamiętać, że ekosystem .NET również oferuje potężne narzędzia do tworzenia i wdrażania modeli ML. W tym wpisie pokażę Ci, jak zacząć przygodę z Machine Learning w C# z wykorzystaniem ML.NET – biblioteką od Microsoftu.
Co zyskasz, czytając ten artykuł?
• Dowiesz się, czym jest ML.NET i dlaczego warto go poznać.
• Poznasz podstawowe etapy tworzenia modelu uczenia maszynowego.
• Zobaczysz przykładowy kod w C#, by łatwiej rozpocząć naukę.
Czym jest ML.NET?
ML.NET to open-source'owa platforma Microsoftu umożliwiająca programistom .NET tworzenie modeli Machine Learning i wbudowywanie ich w aplikacje .NET. To oznacza, że:
• Nie musisz przechodzić na Pythona czy R, by wykorzystywać ML w swoich projektach.
• Możesz korzystać z narzędzi, które już znasz, takich jak Visual Studio czy VS Code.
• Masz do dyspozycji gotowe algorytmy, m.in. do klasyfikacji, regresji, klasteryzacji, przewidywania wartości, wykrywania anomalii i innych.
Typowy przepływ pracy w ML.NET
W dużym uproszczeniu, proces tworzenia i wdrażania modelu w ML.NET wygląda tak:
1. Zbierz dane
Mogą to być pliki CSV, bazy SQL, pliki tekstowe, a nawet źródła w chmurze.
2. Zdefiniuj schemat danych
Określ, które kolumny to tzw. cechy (features), a która kolumna to etykieta (label).
3. Zbuduj i wytrenuj model
Wybierz odpowiedni algorytm, np. regresję liniową lub drzewo decyzyjne.
4. Oceń dokładność modelu
Sprawdź wskaźniki takie jak accuracy (dokładność), precision czy recall w zależności od rodzaju zadania.
5. Prognozuj / przewiduj
Użyj wytrenowanego modelu do przewidywania wyników dla nowych danych.
6. Wdróż model w swojej aplikacji
Możesz go zapisać w formacie .zip i ładować podczas uruchomienia aplikacji .NET.
Przykładowy kod z ML.NET
Poniżej prosty przykład klasyfikacji (np. rozpoznawanie spamu w mailach) przy użyciu ML.NET. Oczywiście kod jest skrócony i pokazuje tylko ogólną ideę.
using Microsoft.ML;
using Microsoft.ML.Data;
// 1. Inicjalizacja kontekstu ML
var mlContext = new MLContext();
// 2. Wczytanie danych
var dataView = mlContext.Data.LoadFromTextFile<EmailData>(
path: "emails.csv",
hasHeader: true,
separatorChar: ',');
// 3. Zdefiniowanie pipeline'u
var pipeline = mlContext.Transforms.Text.FeaturizeText(
outputColumnName: "Features",
inputColumnName: nameof(EmailData.Text))
.Append(mlContext.BinaryClassification.Trainers.SdcaLogisticRegression(
labelColumnName: "Label",
featureColumnName: "Features"));
// 4. Trenowanie modelu
var model = pipeline.Fit(dataView);
// 5. Ocena modelu
var predictions = model.Transform(dataView);
var metrics = mlContext.BinaryClassification.Evaluate(predictions, "Label");
Console.WriteLine($"Dokładność: {metrics.Accuracy:P2}");
// 6. Wykorzystanie modelu do predykcji
var predictor = mlContext.Model.CreatePredictionEngine<EmailData, SpamPrediction>(model);
var sampleEmail = new EmailData { Text = "Wygrałeś nowy telefon, kliknij link!" };
var result = predictor.Predict(sampleEmail);
Console.WriteLine($"Wiadomość jest spamem: {result.PredictedLabel}");
// Klasa modelu danych
public class EmailData
{
[LoadColumn(0)]
public string Text { get; set; }
[LoadColumn(1), ColumnName("Label")]
public bool IsSpam { get; set; }
}
// Klasa wynikowa
public class SpamPrediction
{
[ColumnName("PredictedLabel")]
public bool PredictedLabel { get; set; }
}
• MLContext: punkt wejścia do ML.NET.
• LoadFromTextFile: wczytuje dane z pliku CSV, mapując je na klasę EmailData.
• FeaturizeText: przekształca tekst na wektor liczb (tzw. wektor cech).
• SdcaLogisticRegression: trenuje model klasyfikacji (w tym przypadku binarnej).
• Predict: używa wytrenowanego modelu do przewidywania, czy e-mail to spam.
Dlaczego warto poznać ML w .NET?
1. Jeden język – wiele zastosowań: Możesz pisać zarówno backend, frontend (Blazor), jak i implementować modele ML w tym samym stosie technologicznym.
2. Dobra integracja z ekosystemem Microsoft: Łatwe wdrażanie w chmurze Azure.
3. Wysoka wydajność: ML.NET jest ciągle rozwijane pod kątem optymalizacji.
4. Oszczędność czasu: Jeśli już znasz .NET, to nie musisz przełączać się na zupełnie inny język.
Kluczowe zastosowania
• Klasyfikacja (spam, kategorie produktów, rozpoznawanie nastrojów).
• Regresja (prognozowanie cen, sprzedaży, zużycia energii).
• Klasteryzacja (grupowanie klientów, segmentacja danych).
• Wykrywanie anomalii (bezpieczeństwo, monitoring systemów).
Każda z tych dziedzin może znacznie skorzystać z integracji ML.NET w projekcie .NET.
Szkoła AI w C#/.NET
Jeżeli chciałbyś zgłębić temat machine learning oraz korzystać ze sztucznej intelencji w swoich aplikacjach w C#/.NET, to rozważ dołączenie do mojego kompletnego szkolenia online: Szkoła AI w C#/.NET. W tym szkoleniu nauczysz się tworzyć nowoczesne aplikacje m.in. z OpenAI, Azure AI Services oraz Machine Learning. Zbudujemy kilka aplikacji takich jak: Chat AI, Agent AI, Asystent Głosowy, Asystent Kulinarno-Dietetyczny, czy Inteligentny Asystent Kontentu. Jest to najlepsza droga by wejść do świata AI jako Programista C#/.NET.
Podsumowanie
Machine Learning w C# jest jak najbardziej możliwy i wcale nie musi ustępować popularnym rozwiązaniom opartym na Pythonie. Dzięki ML.NET możemy tworzyć modele uczenia maszynowego, integrując je bezproblemowo z istniejącymi aplikacjami .NET. To dobra wiadomość dla wszystkich, którzy nie chcą rezygnować z ulubionych narzędzi, a jednocześnie chcą korzystać z potęgi uczenia maszynowego.
Jeżeli dopiero zaczynasz przygodę z ML i AI, to zerknij na moje szkolenie Szkoła AI w C#/.NET – być może to pierwszy krok w drodze do głębszej integracji z ML i AI w świecie .NET.
To wszystkie na dzisiaj. Jeżeli taki artykuł Ci się spodobał, to koniecznie dołącz do mojej społeczności – darmowe zapisy, gdzie będziesz również miał dostęp do dodatkowych materiałów i przede wszystkim bonusów. Do zobaczenia w kolejnym artykule.