C# ile Yapay Zeka ve Makine Öğrenimi

C# ile Yapay Zeka ve Makine Öğrenimi

C# ile Yapay Zeka ve Makine Öğrenimine İlk Adım: ML.NET ile Temel Modeller

Merhaba sevgili okuyucular! Bugün, C# dünyasının kapılarını yapay zeka (YZ) ve makine öğrenimi (ML) ile aralamaya ne dersiniz? Belki de “C# ile YZ mi? O da ne demek?” diye düşünebilirsiniz. Ama inanın bana, Microsoft’un geliştirdiği ML.NET kütüphanesi sayesinde, C# bilginizle makine öğrenimi modelleri oluşturmak ve kullanmak hiç de zor değil!

Neden C# ve ML.NET?

C# geliştiricisiyseniz, zaten elinizde güçlü bir araç var demektir. ML.NET, bildiğiniz C# sözdizimi ve araçlarıyla çalışarak, karmaşık matematiksel işlemlere boğulmadan makine öğrenimi modelleri geliştirmenizi sağlar. Ayrıca, .NET ekosistemiyle sorunsuz entegrasyon sayesinde, mevcut projelerinize kolayca yapay zeka yetenekleri ekleyebilirsiniz.

ML.NET ile Neler Yapabilirsiniz?

ML.NET, çeşitli makine öğrenimi görevleri için hazır çözümler sunar. İşte bunlardan bazıları:

* Sınıflandırma: E-postaların spam olup olmadığını belirleme, müşteri yorumlarını olumlu/olumsuz olarak etiketleme gibi.
* Regresyon: Ev fiyatlarını tahmin etme, satış rakamlarını öngörme gibi.
* Öneri Sistemleri: Kullanıcılara ilgi alanlarına uygun ürünler önerme, film tavsiyelerinde bulunma gibi.
* Anomali Tespiti: Kredi kartı dolandırıcılığını tespit etme, üretim hattındaki hataları belirleme gibi.

ML.NET ile İlk Modelinizi Oluşturun: Basit Bir Örnek

Şimdi de ML.NET ile basit bir sınıflandırma modeli oluşturalım. Bu örnekte, çiçeklerin taç ve çanak yapraklarının boyutlarına göre hangi türde olduğunu tahmin edeceğiz (Iris veri seti).

1. Proje Oluşturma: Visual Studio’da yeni bir C# konsol uygulaması projesi oluşturun.
2. ML.NET Paketini Yükleme: NuGet Paket Yöneticisi’ni kullanarak `Microsoft.ML` paketini projenize ekleyin.
3. Veri Hazırlığı: Iris veri setini (CSV formatında) internetten indirebilir veya kendi verinizi kullanabilirsiniz. Veri dosyanızda, her satır bir çiçeği, sütunlar ise taç yaprak uzunluğu, taç yaprak genişliği, çanak yaprak uzunluğu, çanak yaprak genişliği ve türü temsil etmelidir.
4. Model Oluşturma ve Eğitme:

“`csharp
using Microsoft.ML;
using Microsoft.ML.Data;

// Veri sınıfı
public class IrisData
{
[LoadColumn(0)] public float SepalLength { get; set; }
[LoadColumn(1)] public float SepalWidth { get; set; }
[LoadColumn(2)] public float PetalLength { get; set; }
[LoadColumn(3)] public float PetalWidth { get; set; }
[LoadColumn(4)] public string Label { get; set; }
}

// Tahmin sınıfı
public class IrisPrediction
{
[ColumnName(“PredictedLabel”)]
public string PredictedLabel { get; set; }
}

class Program
{
static void Main(string[] args)
{
// MLContext oluştur
MLContext mlContext = new MLContext();

// Veriyi yükle
IDataView dataView = mlContext.Data.LoadFromTextFile(“iris.data”, hasHeader: false, separatorChar: ‘,’);

// Veriyi eğitim ve test kümelerine ayır
DataOperationsCatalog.TrainTestData dataSplit = mlContext.Data.TrainTestSplit(dataView, testFraction: 0.2);
IDataView trainingData = dataSplit.TrainSet;
IDataView testData = dataSplit.TestSet;

// Model oluşturma hattı
var pipeline = mlContext.Transforms.Conversion.MapValueToKey(inputColumnName: “Label”, outputColumnName: “LabelKey”)
.Append(mlContext.Transforms.Concatenate(“Features”, “SepalLength”, “SepalWidth”, “PetalLength”, “PetalWidth”))
.Append(mlContext.MulticlassClassification.Trainers.SdcaMaximumEntropy(“LabelKey”, “Features”))
.Append(mlContext.Transforms.Conversion.MapKeyToValue(“PredictedLabel”, “PredictedLabel”));

// Modeli eğit
ITransformer model = pipeline.Fit(trainingData);

// Modeli test et
IDataView predictions = model.Transform(testData);
MulticlassClassificationMetrics metrics = mlContext.MulticlassClassification.Evaluate(predictions, “LabelKey”, “PredictedLabel”);

Console.WriteLine($”Doğruluk: {metrics.AccuracyMicro}”);

// Tahmin yap
var predictionEngine = mlContext.Model.CreatePredictionEngine<IrisData, IrisPrediction>(model);
var prediction = predictionEngine.Predict(new IrisData { SepalLength = 5.1f, SepalWidth = 3.5f, PetalLength = 1.4f, PetalWidth = 0.2f });

Console.WriteLine($”Tahmin Edilen Tür: {prediction.PredictedLabel}”);

Console.ReadKey();
}
}
“`

Bu kod örneği, ML.NET kullanarak basit bir sınıflandırma modeli oluşturmanın temel adımlarını göstermektedir. Veriyi yükleme, modeli eğitme, test etme ve yeni veri için tahmin yapma gibi işlemleri gerçekleştirebilirsiniz.

 

ML.NET, C# geliştiricileri için yapay zeka ve makine öğrenimi dünyasına harika bir giriş noktasıdır. Bu yazıda, ML.NET’in ne olduğunu, neler yapabileceğinizi ve basit bir örnekle nasıl kullanabileceğinizi gösterdim. Umarım bu yazı, sizi ML.NET ile daha fazla keşif yapmaya teşvik eder.

Unutmayın: Bu sadece bir başlangıç! ML.NET’in sunduğu daha birçok özellik ve algoritma bulunmaktadır. Kendi projelerinizde ML.NET’i kullanarak neler yapabileceğinizi keşfetmek için sabırsızlanıyorum!

İpuçları ve Kaynaklar:

* ML.NET resmi dokümantasyonu: [https://dotnet.microsoft.com/en-us/learn/ml-dotnet](https://dotnet.microsoft.com/en-us/learn/ml-dotnet)
* ML.NET örnekleri: [https://github.com/dotnet/machinelearning-samples](https://github.com/dotnet/machinelearning-samples)
* Stack Overflow ve diğer geliştirici forumlarında ML.NET ile ilgili sorularınızı sorun.

Hepinize bol kodlu günler dilerim!

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir