Blog Dla Programistów C#/.NET

poniedziałek, 5 maja 2025

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ę.

Twoje Pierwsze Kroki z Machine Learning w C# – Wprowadzenie do ML.NET

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.

Autor artykułu:
Kazimierz Szpin
Kazimierz Szpin
CTO & Founder - FindSolution.pl
Programista C#/.NET. Specjalizuje się w Blazor, ASP.NET Core, ASP.NET MVC, ASP.NET Web API, WPF oraz Windows Forms.
Autor bloga ModestProgrammer.pl
Dodaj komentarz

Wyszukiwarka

© Copyright 2025 modestprogrammer.pl. Wszelkie prawa zastrzeżone. Regulamin. Polityka prywatności. Design by Kazimierz Szpin