Share via


Öğretici: Model Oluşturucusu ile regresyonu kullanarak fiyatları tahmin etme

Fiyatları tahmin etmek için regresyon modeli oluşturmak için ML.NET Model Builder kullanmayı öğrenin. Bu öğreticide geliştirdiğiniz .NET konsol uygulaması, geçmiş New York taksi ücreti verilerine göre taksi ücretlerini tahmin eder.

Model Oluşturucusu fiyat tahmini şablonu, sayısal tahmin değeri gerektiren tüm senaryolar için kullanılabilir. Örnek senaryolar şunlardır: ev fiyatı tahmini, talep tahmini ve satış tahmini.

Bu öğreticide şunların nasıl yapıldığını öğreneceksiniz:

  • Verileri hazırlama ve anlama
  • Model Builder Yapılandırma dosyası oluşturma
  • Senaryo seçme
  • Verileri yükleme
  • Modeli eğitme
  • Modeli değerlendirme
  • Tahminler için modeli kullanma

Ön koşullar

Önkoşulların ve yükleme yönergelerinin listesi için Model Oluşturucusu yükleme kılavuzunu ziyaret edin.

Konsol uygulaması oluşturma

  1. "TaxiFarePrediction" adlı bir C# .NET Core Konsol Uygulaması oluşturun. Çözümü ve projeyi aynı dizine yerleştir seçeneğininişaretlenmemiş olduğundan emin olun (VS 2019).

Verileri hazırlama ve anlama

  1. Veri kümesi dosyalarını depolamak için projenizde Data adlı bir dizin oluşturun.

  2. Makine öğrenmesi modelini eğitmek ve değerlendirmek için kullanılan veri kümesi başlangıçta NYC TLC Taxi Trip veri kümesinden alınmıştı.

    1. Veri kümesini indirmek için taxi-fare-train.csv indirme bağlantısına gidin.

    2. Sayfa yüklendiğinde, sayfanın herhangi bir yerine sağ tıklayın ve Farklı kaydet'i seçin.

    3. Dosyayı önceki adımda oluşturduğunuz Veri klasörüne kaydetmek için Farklı Kaydet İletişim Kutusunu kullanın.

  3. Çözüm Gezgini'dataxi-fare-train.csv dosyasına sağ tıklayın ve Özellikler'i seçin. Gelişmiş'in altında, Çıkış Dizinine Kopyala değerini Daha yeniyse Kopyala olarak değiştirin.

Veri kümesindeki taxi-fare-train.csv her satır, taksiyle yapılan yolculukların ayrıntılarını içerir.

  1. taxi-fare-train.csv veri kümesini açma

    Sağlanan veri kümesi aşağıdaki sütunları içerir:

    • vendor_id: Taksi satıcısının kimliği bir özelliktir.
    • rate_code: Taksi yolculuğunun fiyat türü bir özelliktir.
    • passenger_count: Seyahatte olan yolcu sayısı bir özelliktir.
    • trip_time_in_secs: Yolculuğun ne kadar sürdüğü. Yolculuk tamamlanmadan önce seyahatin ücretini tahmin etmek istiyorsunuz. O anda yolculuğun ne kadar süreceğini bilmiyorsun. Bu nedenle, yolculuk süresi bir özellik değildir ve bu sütunu modelin dışında tutacaksınız.
    • trip_distance: Yolculuğun uzaklığı bir özelliktir.
    • payment_type: Ödeme yöntemi (nakit veya kredi kartı) bir özelliktir.
    • fare_amount: Ödenen toplam taksi ücreti etikettir.

label, tahmin etmek istediğiniz sütundur. Regresyon görevi gerçekleştirirken, amaç sayısal bir değeri tahmin etmektir. Bu fiyat tahmini senaryosunda taksi yolculuğunun maliyeti tahmin ediliyor. Bu nedenle fare_amount etikettir. Tanımlanan features , modeline tahmin labeletmek için verdiğiniz girişlerdir. Bu durumda, trip_time_in_secs dışında kalan sütunlar, ücret miktarını tahmin etmek için özellik veya giriş olarak kullanılır.

Model Oluşturucu yapılandırma dosyası oluşturma

Çözüme Model Oluşturucusu'nu ilk kez eklediğinizde bir mbconfig dosya oluşturmanız istenir. Dosya, mbconfig oturumu yeniden açmanızı sağlamak için Model Builder'da yaptığınız her şeyi izler.

  1. Çözüm Gezgini'daTaxiFarePrediction projesine sağ tıklayın veMakine Öğrenmesi ModeliEkle>... seçeneğini belirleyin.
  2. mbconfig Projeye TaxiFarePrediction adını verin ve Ekle düğmesine tıklayın.

Senaryo seçme

Model OluşturucuSu Senaryo Ekranı

Modelinizi eğitmek için Model Builder tarafından sağlanan kullanılabilir makine öğrenmesi senaryoları listesinden seçim yapmanız gerekir. Bu durumda senaryo şöyledir Value prediction: .

  1. Model Oluşturucu aracının senaryo adımında Değer tahmini senaryosu'nu seçin.

Ortamı seçin

Model Oluşturucusu, seçilen senaryoya bağlı olarak eğitimi farklı ortamlarda çalıştırabilir.

  1. Local (CPU) Öğenin seçili olduğunu onaylayın ve sonraki adım düğmesine tıklayın.

Verileri yükleme

Model Oluşturucusu iki kaynaktan verileri kabul eder: SQL Server veritabanı ya da csv veya tsv biçimindeki yerel bir dosya.

  1. Model Oluşturucu aracının veri adımında veri kaynağı türü seçiminden Dosya'yı seçin.
  2. Metin kutusunun yanındaki Gözat düğmesini seçin ve veri dizinindekitaxi-fare-test.csvgöz atmak ve seçmek için Dosya Gezgini kullanın
  3. Tahmin etmek için Sütundaki fare_amount seçin (Etiket) açılan listesinde.
  4. Gelişmiş veri seçenekleri bağlantısına tıklayın.
  5. Sütun ayarları sekmesinde, trip_time_in_secs sütununun Amaç açılan listesini seçin ve yoksay'ı seçerek eğitim sırasında bir özellik olarak hariç tutun. İletişim kutusunu kapatmak için Kaydet düğmesine tıklayın.
  6. Sonraki adım düğmesine tıklayın.

Modeli eğitme

Bu öğreticide fiyat tahmini modelini eğitmek için kullanılan makine öğrenmesi görevi regresyondur. Model eğitim işlemi sırasında Model Builder, farklı regresyon algoritmalarını ve ayarlarını kullanarak ayrı modelleri eğiterek veri kümeniz için en iyi performansı gösteren modeli bulur.

Modelin eğitmek için gereken süre, veri miktarıyla orantılıdır. Model Oluşturucusu, veri kaynağınızın boyutuna göre Eğitmek için süre (saniye) için otomatik olarak varsayılan bir değer seçer.

  1. Daha uzun süre eğitmek istemiyorsanız, Eğitim süresi (saniye) için varsayılan değeri olduğu gibi bırakın.
  2. Eğitimi Başlat'ı seçin.

Eğitim süreci boyunca ilerleme verileri, eğitim adımının Training results bölümünde görüntülenir.

  • Durum, eğitim işleminin tamamlanma durumunu görüntüler.
  • En iyi doğruluk, Şimdiye kadar Model Oluşturucusu tarafından bulunan en iyi performansa sahip modelin doğruluğunu görüntüler. Daha yüksek doğruluk, modelin test verilerinde daha doğru tahminde olduğu anlamına gelir.
  • En iyi algoritma, şimdiye kadar Model Oluşturucusu tarafından bulunan en iyi performans gösteren algoritmanın adını görüntüler.
  • Son algoritma, modeli eğitmek için Model Builder tarafından en son kullanılan algoritmanın adını görüntüler.

Eğitim tamamlandıktan sonra dosya, mbconfig eğitimden sonra çağrılan TaxiFarePrediction.zip oluşturulan modele ve onunla birlikte iki C# dosyasına sahip olur:

  • TaxiFare.consumption.cs: Bu dosyanın modeli yükleyen ve onunla bir tahmin altyapısı oluşturup tahmini döndüren genel bir yöntemi vardır.
  • TaxiFare.training.cs: Bu dosya, kullandığı hiper parametreler dahil olmak üzere en iyi modeli oluşturmak için Model Builder'ın oluşturduğu eğitim işlem hattından oluşur.

Değerlendirme adımına gitmek için sonraki adım düğmesine tıklayın.

Modeli değerlendirme

Eğitim adımının sonucu, en iyi performansa sahip bir model olacaktır. Model Oluşturucu aracının değerlendirme adımında, En iyi model bölümünde, Model girişindeki en iyi performansa sahip model tarafından kullanılan algoritmayı ve RSquared'deki bu modele yönelik ölçümleri içerir.

Ayrıca, Visual Studio'nun Çıkış penceresinde en iyi modelleri ve bunların ölçümlerini içeren bir özet tablosu bulunur.

Bu bölüm ayrıca tek bir tahmin gerçekleştirerek modelinizi test etmenizi sağlar. Değerleri doldurmak için metin kutuları sunar ve en iyi modelden tahmin almak için Tahmin düğmesine tıklayabilirsiniz. Varsayılan olarak bu, veri kümenizdeki rastgele bir satırla doldurulur.

Doğruluk ölçümlerinizden memnun değilseniz, modeli eğitmek veya daha fazla veri kullanmak için gereken süreyi artırmak için model doğruluğunu denemenin ve geliştirmenin bazı kolay yolları vardır. Aksi takdirde, sonraki adım'a tıklayarak tüketme adımına gidin.

(İsteğe bağlı) Modeli kullanma

Bu adım, modeli kullanmak için kullanabileceğiniz proje şablonlarına sahip olacaktır. Bu adım isteğe bağlıdır ve modele hizmet verme konusunda ihtiyaçlarınıza en uygun yöntemi seçebilirsiniz.

  • Konsol Uygulaması
  • Web API

Konsol Uygulaması

Çözümünüzde bir konsol uygulaması eklerken projeyi adlandırmanız istenir.

  1. Konsol projesini TaxiFare_Console adlandırın.

  2. Projeyi geçerli çözümünüze eklemek için Çözüme ekle'ye tıklayın.

  3. Uygulamayı çalıştırın.

    Program tarafından oluşturulan çıkış aşağıdaki kod parçacığına benzer görünmelidir:

    Predicted Fare: 15.020833
    

Web API

Çözümünüzde web API'sini eklerken projeyi adlandırmanız istenir.

  1. Web API projesini TaxiFare_API adlandırın.

  2. Projeyi geçerli çözümünüze eklemek için Çözüme ekle* seçeneğine tıklayın.

  3. Uygulamayı çalıştırın.

  4. PowerShell'i açın ve PORT'un uygulamanızın dinlediği bağlantı noktası olduğu yere aşağıdaki kodu girin.

    $body = @{
        Vendor_id="CMT"
        Rate_code=1.0
        Passenger_count=1.0
        Trip_distance=3.8
        Payment_type="CRD"
    }
    
    Invoke-RestMethod "https://localhost:<PORT>/predict" -Method Post -Body ($body | ConvertTo-Json) -ContentType "application/json"
    
  5. Başarılı olursa çıkış aşağıdaki metne benzer görünmelidir:

    score
    -----
    15.020833
    

Sonraki Adımlar

Bu öğreticide, şunların nasıl yapıldığını öğrendiniz:

  • Verileri hazırlama ve anlama
  • Senaryo seçme
  • Verileri yükleme
  • Modeli eğitme
  • Modeli değerlendirme
  • Tahminler için modeli kullanma

Ek Kaynaklar

Bu öğreticide bahsedilen konular hakkında daha fazla bilgi edinmek için aşağıdaki kaynakları ziyaret edin: