• bookmark

ML.Net Nedir Nasıl Kullanılır?

ML.Net Nedir Nasıl Kullanılır?

Ml.Net Makine öğrenmesi, günümüzde birçok uygulama alanında kullanılan ve verilerden otomatik olarak öğrenme ve tahmin yapma yeteneği sağlayan bir bilim dalıdır. Makine öğrenmesi uygulamaları, açıkça programlanmaları gerekmek yerine verilerdeki desenleri kullanarak çeşitli problemleri çözebilir. Örneğin, makine öğrenmesi uygulamaları ile müşteri geri bildirimlerini analiz edebilir, ev fiyatlarını tahmin edebilir, sahte işlemleri tespit edebilir veya ürün önerileri sunabilirsiniz.

Makine öğrenmesi uygulamaları geliştirmek için birçok araç ve kütüphane mevcuttur. Ancak, .NET platformunda çalışan ve C# veya F# gibi dilleri kullanan geliştiriciler için seçenekler sınırlıdır. ML.Net, bu açığı doldurmak üzere Microsoft tarafından geliştirilen ve .NET uygulamalarına makine öğrenmesi ekleme olanağı sağlayan bir kütüphanedir.

Bu makalede, ML.Net’in ne olduğunu, nasıl çalıştığını ve nasıl kullanabileceğinizi anlatacağım. Ayrıca, ML.Net ile ev fiyatlarını nasıl tahmin edebileceğinize dair basit bir örnek uygulama göstereceğim.

ML.Net Nedir?

ML.Net, .NET platformu için açık kaynaklı ve çapraz platformlu bir makine öğrenmesi kütüphanesidir. ML.Net ile .NET uygulamalarına makine öğrenmesi ekleme olanağı sağlar. Bu sayede, uygulamanız için kullanılabilir verileri kullanarak otomatik tahminler yapabilirsiniz.

ML.Net ile yapabileceğiniz bazı uygulama örnekleri şunlardır:

– Sınıflandırma: Müşteri geri bildirimlerini otomatik olarak pozitif ve negatif kategorilere ayırın

– Regresyon: Büyüklüğüne ve konumuna göre evlerin fiyatını tahmin et

– Anomali Algılama: Sahte bankacılık işlemlerini algıla

– Öneriler: Çevrimiçi alışveriş yapanların önceki alışverişlerine göre satın almak isteyebileceği ürünleri öner

– Zaman serisi: Hava durumunu/ürün satışlarını tahmin et

– Resim sınıflandırma: Tıbbi görüntülerde patolojileri kategorilere ayır

– Metin sınıflandırması: Belgeleri içeriğine göre kategorilere ayır

ML.Net, Windows, Linux ve macOS üzerinde çalışır ve C# ve F# dillerini destekler. Ayrıca, ML.Net ile önceden eğitilmiş TensorFlow ve ONNX modellerini içeri aktarabilir veya dışarı aktarabilirsiniz.

ML.Net Nasıl Çalışır?

ML.Net ile makine öğrenmesi uygulamaları geliştirmek için aşağıdaki adımları izlemeniz gerekir:

1. Verileri hazırlayın. Makine öğrenmesi modelinin amacı, eğitim verileri içindeki desenleri tanımlamaktır. Bu desenler, yeni verileri kullanarak tahminde bulunmak için kullanılır. Verilerinizi bir CSV dosyasına kaydedebilir veya C# kodunda bir sınıf olarak tanımlayabilirsiniz.

2. Modeli eğitin. MLContext nesnesi oluşturun ve verilerinizi IDataView nesnesine yükleyin. Verilerinizdeki giriş ve çıkış sütunlarını belirtmek için bir veri hazırlama pipeline oluşturun. Bir makine öğrenmesi algoritması seçin ve modelinizi eğitmek için Fit yöntemini çağırın.

3. Modeli değerlendirin. Modelinizin performansını ölçmek için test verilerini kullanın. Modelinizden tahminler almak için Predict yöntemini çağırın ve gerçek değerlerle karşılaştırın. Modelinizin doğruluğunu ve hata oranını hesaplayın.

4. Modeli kullanın. Modelinizden yeni verilerle tahminler almak için CreatePredictionEngine yöntemini kullanın. Tahminleri uygulamanızda görüntüleyin veya kaydedin.

ML.Net ile Ev Fiyatlarını Tahmin Etme Örneği

Şimdi, ML.Net ile ev fiyatlarını nasıl tahmin edebileceğimize dair basit bir örnek uygulama göstereceğim. Bu uygulama, ev boyutu, konum, tarihi fiyatlar ve mevcut fiyat gibi verileri kullanarak doğrusal bir regresyon modeli oluşturur.

Verileri Hazırlama

SizeLocationHistoricalPricesCurrentPrice
600A100000, 125000, 122000170000
1000B200000, 250000, 230000225000
1000A126000, 130000, 200000195000
850B150000, 175000, 210000205000
900A155000, 190000, 220000210000
550A99000 , 98000 , 130000180000
Veri Kümemiz

Verilerimizi C# kodunda HousingData adında bir sınıf olarak tanımlayabiliriz:


#csharp public class HousingData { [LoadColumn(0)] public float Size { get; set; } [LoadColumn(1)] public string Location { get; set; } [LoadColumn(2,4)] [VectorType(3)] public float[] HistoricalPrices { get; set; } [LoadColumn(5)] [ColumnName("Label")] public float CurrentPrice { get; set; } }

Verilerimizi HousingData tipinde bir dizi olarak oluşturabiliriz:


HousingData[] housingData = new HousingData[] { new HousingData { Size = 600f , Location = "A", HistoricalPrices = new float[] {100000f ,125000f ,122000f }, CurrentPrice = 170000f }, new HousingData { Size = 1000f , Location = "B", HistoricalPrices = new float[] {200000f ,250000f ,230000f }, CurrentPrice = 225000f }, new HousingData { Size = 1000f , Location = "A", HistoricalPrices = new float[] {126000f ,130000f ,200000f }, CurrentPrice = 195000f }, new HousingData { Size = 850f , Location = "B", HistoricalPrices = new float[] {150000f ,175000f ,210000f }, CurrentPrice = 205000f }, new HousingData { Size = 900f , Location = "A", HistoricalPrices = new float[] {155000f ,190000f ,220000f }, CurrentPrice = 210000f }, new HousingData { Size = 550f , Location = "B", HistoricalPrices = new float[] {99000f ,98000f ,130000f }, CurrentPrice = 180000f } };

Verilerimizi MLContext nesnesi oluşturarak IDataView nesnesine yükleyebiliriz:


MLContext mlContext = new MLContext(); IDataView data = mlContext.Data.LoadFromEnumerable(housingData);

Modeli Eğitme

Modelimizi eğitmek için verilerimizi eğitim ve test kümelerine bölmeliyiz. Böylece, modelimizin performansını test verileri ile ölçebiliriz. Verilerimizi %80 eğitim ve %20 test olacak şekilde bölüyoruz:


DataOperationsCatalog.TrainTestData dataSplit = mlContext.Data.TrainTestSplit(data, testFraction: 0.2); IDataView trainData = dataSplit.TrainSet; IDataView testData = dataSplit.TestSet;

Verilerimizi hazırlamak için bir veri hazırlama pipeline oluşturuyoruz. Pipeline için şu işlemleri yapıyoruz:

  • Location sütununu OneHotEncoding ile sayısal bir vektöre dönüştürüyoruz. Böylece, modelimiz kategorik veriyi anlayabilir.
  • Size ve HistoricalPrices sütunlarını Concatenate ile tek bir vektör haline getiriyoruz. Böylece, modelimiz birden fazla giriş sütununu kullanabilir.
  • Sdca adlı bir regresyon algoritması seçiyoruz. Bu algoritma, doğrusal bir regresyon modeli oluşturmak için kullanılır.

var pipeline = mlContext.Transforms.Categorical.OneHotEncoding("Location") .Append(mlContext.Transforms.Concatenate("Features", "Size", "Location", "HistoricalPrices")) .Append(mlContext.Regression.Trainers.Sdca(labelColumnName: "Label", maximumNumberOfIterations: 100));

var model = pipeline.Fit(trainData);

Pipeline eğitim verileri ile çalıştırarak modelimizi eğitiyoruz:


var model = pipeline.Fit(trainData);

Modeli Değerlendirme

Modelimizi değerlendirmek için test verilerini kullanıyoruz. Modelimizden tahminler almak için Transform yöntemini çağırıyoruz:


IDataView predictions = model.Transform(testData);

Modelimizin performansını ölçmek için RegressionMetrics nesnesini kullanıyoruz. Bu nesne, modelimizin doğruluğunu ve hata oranını hesaplamak için çeşitli metrikler sunar. Örneğin, R-squared değeri, modelimizin verilerdeki varyansı ne kadar açıkladığını gösterir. Mean Absolute Error değeri, modelimizin tahminlerinin gerçek değerlerden ne kadar uzak olduğunu gösterir.


var metrics = mlContext.Regression.Evaluate(predictions, labelColumnName: "Label", scoreColumnName: "Score"); Console.WriteLine($"R-squared: {metrics.RSquared:0.##}"); Console.WriteLine($"Mean Absolute Error: {metrics.MeanAbsoluteError:#.##}");

Modeli Kullanma

Modelimizi kullanarak yeni verilerle tahminler yapabiliriz. Örneğin, aşağıdaki gibi yeni bir ev verisi oluşturabiliriz:


var newHouse = new HousingData { Size = 800f, Location = "A", HistoricalPrices = new float[] {140000f, 160000f, 170000f} };

Modelimizden tahmin almak için CreatePredictionEngine yöntemini kullanabiliriz. Bu yöntem, giriş ve çıkış tiplerini belirtmemizi ister. Giriş tipi HousingData, çıkış tipi ise Prediction adında bir sınıftır. Prediction sütununda tahmin edilen ev fiyatı bulunur.


public class Prediction { [ColumnName("Score")] public float Price { get; set; } }

CreatePredictionEngine yöntemi ile bir tahmin motoru oluşturuyoruz:


var predictionEngine = mlContext.Model.CreatePredictionEngine(model);

Tahmin motorunu kullanarak yeni ev verisi için tahminde bulunuyoruz:


var prediction = predictionEngine.Predict(newHouse); Console.WriteLine($"Predicted price: {prediction.Price:0.##}");

Sonuç

Bu makalede, ML.Net’in ne olduğunu, nasıl çalıştığını ve nasıl kullanabileceğinizi öğrendiniz. Ayrıca, ev fiyatlarını nasıl tahmin edebileceğinize dair basit bir örnek uygulama gösterdim.

ML.Net ile daha fazla şey yapmak istiyorsanız, kaynaklara göz atabilirsiniz.

Ayrıca Ml.Net ile yapılmış bu projeye göz atabilirsiniz: Makine Öğrenimi – TR Duygu Analizi

İlginizi Çekebilecek Başka Bir Konu: GPT-4: Yapay Zekanın Son Harikası

Kaynak : https://learn.microsoft.com/tr-tr/dotnet/machine-learning/how-does-mldotnet-work
Kaynak : https://learn.microsoft.com/tr-tr/dotnet/machine-learning/how-to-guides/train-machine-learning-model-ml-net
Kaynak : https://github.com/abdullaheroll/Ml.Net-TR-Duygu-Analizi
E-bültene Abone Ol Merak etmeyin. Spam yapmayacağız.

Yazar

Yeni şeyler keşfetmeye hazır mısınız?

İlgili Yazılar

Başka Yazı Yok

Kayıt Ol

VEYA

Zaten üye misiniz? Giriş Yap

Giriş Yap

close

Abone Olun