Aracılığıyla paylaş


Öğretici: Model Builder ile restoran sağlığı ihlallerinin önem derecesini sınıflandırma

Sağlık denetimleri sırasında bulunan restoran ihlallerinin risk düzeyini kategorilere ayırmak için Model Builder'ı kullanarak çok sınıflı bir sınıflandırma modeli oluşturmayı öğrenin.

Bu eğitimde şunları öğreniyorsunuz:

  • Verileri hazırlama ve anlama
  • Model Builder yapılandırma dosyası oluşturma
  • Senaryo seçin
  • Veritabanından veri yükleme
  • Modeli eğitin
  • Modeli değerlendirme
  • Tahminler için modeli kullanma

Önkoşullar

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

Model Oluşturucusu çok sınıflı sınıflandırmaya genel bakış

Bu örnek, Model Builder ile oluşturulmuş bir makine öğrenmesi modeli kullanarak sağlık ihlali riskini kategorize eden bir C# konsol uygulaması oluşturur. Bu öğreticinin kaynak kodunu dotnet/machinelearning-samples GitHub deposunda bulabilirsiniz.

Konsol uygulaması oluşturma

"RestaurantViolations" adlı bir C# konsol uygulaması oluşturun.

Verileri hazırlama ve anlama

Makine öğrenmesi modelini eğitmek ve değerlendirmek için kullanılan veri kümesi başlangıçta San Francisco Halk Sağlığı Restoranı Güvenlik Puanları bölümünden alınıyor. Kolaylık sağlamak için veri kümesi yalnızca modeli eğitmek ve tahminde bulunmak için uygun sütunları içerecek şekilde daraltılmıştır. Veri kümesi hakkında daha fazla bilgi edinmek için aşağıdaki web sitesini ziyaret edin.

Restaurant Safety Scores veri kümesini indirin ve dosyayı açın.

Veri kümesindeki her satır, Sağlık Departmanı tarafından yapılan bir denetim sırasında gözlemlenen ihlallerle ilgili bilgileri ve bu ihlallerin kamu sağlığı ve güvenliği için mevcut olan tehdidin risk değerlendirmesini içerir.

DenetimTürü İhlal Açıklaması RiskCategory
Rutin - Planlanmamış Yetersiz temizlenmiş veya dezenfekte edilmiş gıda temas yüzeyleri Orta Riskli
Yeni Sahiplik Yüksek riskli vermin istilası Yüksek Risk
Rutin - Planlanmamış Temizlik bezleri temiz değil, düzgün saklanmamış veya dezenfektan yetersiz. Düşük Risk
  • InspectionType: denetim türü. Bu, yeni bir kuruluş için ilk kez yapılan bir denetim, rutin bir denetim, şikayet incelemesi ve diğer birçok tür olabilir.
  • ViolationDescription: denetim sırasında bulunan ihlalin açıklaması.
  • RiskKategorisi: İhlallerin halk sağlığı ve güvenliği için oluşturduğu risk önem derecesi.

label, tahmin etmek istediğiniz sütundur. Sınıflandırma görevi gerçekleştirirken, amaç bir kategori (metin veya sayısal) atamaktır. Bu sınıflandırma senaryosunda, ihlalin önem derecesi düşük, orta veya yüksek risk değerine atanır. Bu nedenle RiskCategory etiketidir. Modelin label tahmin edebilmesi için features verdiğiniz girişlerdir. Bu durumda, InspectionType ve ViolationDescription özellik veya giriş olarak RiskCategory'yi tahmin etmek için kullanılır.

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

Model Builder'ı çözüme ilk kez eklediğinizde sizden bir mbconfig dosya oluşturmanız istenir. File mbconfig, Model Builder'da yaptığınız her şeyi takip eder ve oturumu yeniden açmanızı sağlar.

  1. Çözüm Gezgini'ndeRestaurantViolations projesine sağ tıklayın veMakine Öğrenmesi ModeliEkle'yi> seçin.
  2. mbconfig Projeye RestaurantViolationsPrediction adını verin ve Ekle düğmesine tıklayın.

Senaryo seçin

Model Oluşturucusu Senaryo Ekranı

Modelinizi eğitmek için Model Oluşturucusu tarafından sağlanan kullanılabilir makine öğrenmesi senaryoları listesinden seçim yapın. Bu durumda senaryo Veri sınıflandırmadır.

  1. Bu örnek için görev çok sınıflı sınıflandırmadır. Model Oluşturucusu'nun Senaryo adımında Veri sınıflandırma senaryosunu seçin.

Verileri yükleme

Model Oluşturucusu, bir SQL Server veritabanından veya , tsvtxt veya biçimindeki csvyerel bir dosyadan verileri kabul eder.

  1. Model Oluşturucu aracının veri adımında veri kaynağı türü seçiminden SQL Server'ı seçin.
  2. Veri kaynağı seç düğmesini seçin.
    1. Veri Kaynağı Seç iletişim kutusunda Microsoft SQL Server Veritabanı Dosyası'nı seçin.
    2. Her zaman bu seçimi kullan onay kutusunun işaretini kaldırın ve Devam'a tıklayın.
    3. Bağlantı Özellikleri iletişim kutusunda Gözat ve indirilen RestaurantScores.mdf dosyasını seçin.
    4. Tamam'ı seçin.
  3. İhlaller'i, Tablo açılan listesinden seçin.
  4. Tahmin edilecek sütunda (Etiket) açılan listesindeRiskCategory'yi seçin.
  5. Gelişmiş veri seçenekleri'nde varsayılan seçimleri değiştirmeyin.
  6. Model Oluşturucusu'nda eğitim adımına gitmek için Sonraki Adım düğmesine tıklayın.

Modeli eğitin

Bu öğreticide sorun sınıflandırma modelini eğitmek için kullanılan makine öğrenmesi görevi çok sınıflı sınıflandırmadır. Model eğitim süreci sırasında Model Builder, farklı çok sınıflı sınıflandırma 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 Builder, veri kaynağınızın boyutuna göre eğitme süresi (saniye) için otomatik olarak bir varsayılan değer seçer.

  1. Model Oluşturucusu eğitmek için zaman (saniye) değerini 60 saniye olarak ayarlar. Daha uzun bir süre için eğitim, Model Builder'ın en iyi modeli ararken daha fazla sayıda algoritmayı ve parametre birleşimini keşfetmesini sağlar.
  2. Eğitimi Başlat'a tıklayın.

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 mbconfig dosyası, eğitimden sonra RestaurantViolationsPrediction.zip olarak adlandırılan modeli ve buna ek olarak iki C# dosyasını içerir.

  • RestaurantViolationsPrediction.consumption.cs: Bu dosya, modeli yükleyen ve onunla bir tahmin altyapısı oluşturup tahmini döndüren genel bir yönteme sahiptir.
  • RestaurantViolationsPrediction.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 olan bir model olacaktır. Model Oluşturucusu aracının değerlendirme adımında, En iyi model bölümünde, Model girişindeki en iyi performans gösteren model tarafından kullanılan algoritmayı ve bu modelin Doğruluk ölçümlerini 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, tek bir tahmin gerçekleştirerek modelinizi test etmenizi de sağlar. Değerleri doldurmak için metin kutuları sunar ve en iyi modelden tahmin almak için Tahmin et düğmesine tıklayabilirsiniz. Varsayılan olarak bu, veri kümenizdeki rastgele bir satırla doldurulur.

(İ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 modelin servis edilmesi için gereksinimlerinize en uygun yöntemi seçebilirsiniz.

  • Konsol Uygulaması
  • Web API'si

Konsol Uygulaması

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

  1. Konsol projesini RestaurantViolationsPrediction_Console adlandırın.

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

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

    Program tarafından oluşturulan çıktı aşağıdaki kod parçacığına benzer olmalıdır:

    InspectionType: Routine - Unscheduled
    ViolationDescription: Moderate risk food holding temperature
    
    Predicted RiskCategory: Moderate Risk
    

Web API'si

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

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

  2. Projeyi geçerli çözümünüzde 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 aşağıdaki kodu girin.

    $body = @{
        InspectionType="Reinspection/Followup"
        ViolationDescription="Inadequately cleaned or sanitized food contact surfaces"
    }
    
    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. Çıktı, Tahmin edilen RiskKatgory'sineOrta Riskli olarak sahiptir ve giriş etiketlerinin her birinin puanlarına sahiptir: Düşük Risk, Yüksek Risk ve Orta Riskli.

    prediction    score
    ----------    -----
    Moderate Risk {0.055566575, 0.058012854, 0.88642055}
    

Tebrikler! Model Oluşturucusu'nu kullanarak sağlık ihlali riskini kategorize etmek için başarıyla bir makine öğrenmesi modeli oluşturdunuz. Bu öğreticinin kaynak kodunu dotnet/machinelearning-samples GitHub deposunda bulabilirsiniz.

Ek kaynaklar

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