İyi günler Türk Hack Team ailesi.
Bugün sizlere son zamanlarda oldukça popüler olan "Machine Learning" nedir onu öğreniceğiz.
>İçerisindekiler<
Machine learning nedir?
Machine learning nerede kullanılıyor?
Machine learning örnekleri.
Machine learning nedir?
Machine learning kavramını eminimki en az bir kere duymuşsunuzdur. Çünkü son zamanlarda bu teknoloji oldukça popülerleşti. Simdi bakalım bu makine öğrenimi nedir.
Machine Learning veya ML olarakta anılır, belirli verileri alarak bu verilere göre tahminde bulunan ve size sonuç vermeye odaklanan bir yapak zeka alt kümesidir. Machine Learning genellikle yapak zeka kategorisinde değerlendirilir. Yapak zeka kategorisinde değerlendirilmesinin sebebi ise genellikle doğrudan programlama ile tahminde bulunması değilde belirli verileri kullanarak tahminde bulunmasından kaynaklanıyor.
Machine learning nerede kullanılıyor?
Son zamanlarda çok fazla kullanılan bu teknoloji Siri, Google Assistan ve Microsoft'un Cortana gibi yazılımlarda oldukça çok kullanılmakta.
Ayrıca Youtube, Facebook ve Netflix gibi yerler bize reklam gösterirken veya bir şey önerirken genellikle Machine Learning'i kullanıyor. Bunun sebebi ise bizim hobilerimizi ilgilendiğimiz alanları analiz ederek bizim ilgimizi çekicek şeyler önermekte. Aynı zamanda bağış oynarken veyahutta Satrançta kazanç veya kayıp hamlelerini hesaplarken Machine Learning kullanılmakta.
Machine learning örnekleri
Simdi C# machine learning kullanılır ondan bahsediceğim.
İlk başta yeni proje oluşturalım. Ardından ise bu projemize ML.Net kütüphanesini yükliyelim.
Bu kütüphaneye Nuget üzerinden ulaşabilirsiniz.
Bu kısımda en üste bulunan Microsoft.ML'yi indiriyoruz.
Simdi ise usingleri projemize dahil edelim.
C#:
using Microsoft.ML;[/B][/SIZE][/COLOR]
[SIZE=5][COLOR=rgb(255, 255, 255)][B]using Microsoft.ML.Data;
Simdi örnek bir program yapalım bu program ise arabanın maksimum hızına göre bize bir fiyat biçsin.
Simdi iki adet class açıcağız. Birisi arabanın datalarını tutucak diğeri ise tahmini tutucak.
C#:
public class ArabaData
{
public float MaxSpeed { get; set; }
public float Price { get; set; }
}
public class Tahmin
{
[ColumnName("Score")]
public float Price { get; set; }
}
Burada iki tane class oluşturduk simdi ise bu verileri işlemeye geçelim.
İlk başta yeni bir MLContext oluşturalım.
C#:
MLContext mlContext = new MLContext();
Simdi ise kullanmalık bir kaç tane veri oluşturalım.
C#:
MLContext mlContext = new MLContext();
ArabaData[] arabaDatas = {
new ArabaData() { MaxSpeed = 1.1F, Price = 1.2F },
new ArabaData() { MaxSpeed = 1.9F, Price = 2.3F },
new ArabaData() { MaxSpeed = 2.8F, Price = 3.0F },
new ArabaData() { MaxSpeed = 3.4F, Price = 3.7F } };
IDataView exampledata = mlContext.Data.LoadFromEnumerable(arabaDatas);
Simdi ise verileri hazırlamak için bir pipeline kullanalım.
C#:
var pipeline = mlContext.Transforms.Concatenate("Features", new[] { "MaxSpeed" })
.Append(mlContext.Regression.Trainers.Sdca(labelColumnName: "Price", maximumNumberOfIterations: 100));
C#:
var model = pipeline.Fit(exampledata);
Simdi ise tahminimizi oluşturuyoruz.
C#:
var speed = new ArabaData() { MaxSpeed = 2.5F };
var price = mlContext.Model.CreatePredictionEngine<ArabaData, Tahmin>(model).Predict(speed);
Simdi bu tahmini ekrana yazdıralım.
C#:
Console.WriteLine($" {speed.MaxSpeed * 1000} fiyat: {price.Price * 100:C}k");
Burada gördüğümüz üzere bize arabanın hızına bağlı olarak bir tane tahmin sundu.
C#'taki kodunun tamamı.
C#:
using System;
using Microsoft.ML;
using Microsoft.ML.Data;
class Program
{
public class ArabaData
{
public float MaxSpeed { get; set; }
public float Price { get; set; }
}
public class Tahmin
{
[ColumnName("Score")]
public float Price { get; set; }
}
static void Main(string[] args)
{
MLContext mlContext = new MLContext();
ArabaData[] arabaDatas = {
new ArabaData() { MaxSpeed = 1.1F, Price = 1.2F },
new ArabaData() { MaxSpeed = 1.9F, Price = 2.3F },
new ArabaData() { MaxSpeed = 2.8F, Price = 3.0F },
new ArabaData() { MaxSpeed = 3.4F, Price = 3.7F } };
IDataView exampledata = mlContext.Data.LoadFromEnumerable(arabaDatas);
var pipeline = mlContext.Transforms.Concatenate("Features", new[] { "MaxSpeed" })
.Append(mlContext.Regression.Trainers.Sdca(labelColumnName: "Price", maximumNumberOfIterations: 100));
var model = pipeline.Fit(exampledata);
var speed = new ArabaData() { MaxSpeed = 2.5F };
var price = mlContext.Model.CreatePredictionEngine<ArabaData, Tahmin>(model).Predict(speed);
Console.WriteLine($" {speed.MaxSpeed } fiyat: {price.Price * 100:C}k");
}
}
Umarım bu konu işinize yaramıştır. C# kodunu yazarken Microsoft'un dökümantosyonunu kullandım isterseniz sizde yararlanabilirsiniz.