Freigeben über


Lernprogramm: Klassifizieren des Schweregrads von Restaurant-Gesundheitsverstößen mit dem Model Builder

Erfahren Sie, wie Sie ein Mehrklassenklassifizierungsmodell mithilfe des Modell-Generators erstellen, um das Risikoniveau von Restaurantverletzungen zu kategorisieren, die während der Gesundheitsüberprüfung gefunden wurden.

In diesem Tutorial lernen Sie Folgendes:

  • Vorbereiten und Verstehen der Daten
  • Erstellen einer Modell-Generator-Konfigurationsdatei
  • Auswählen eines Szenarios
  • Laden von Daten aus einer Datenbank
  • Trainieren des Modells
  • Auswerten des Modells
  • Verwenden des Modells für Vorhersagen

Voraussetzungen

Eine Liste der Voraussetzungen und Installationsanweisungen finden Sie im Installationshandbuch für den Modell-Generator.

Übersicht über die Mehrklassenklassifizierung des Modell-Generators

In diesem Beispiel wird eine C#-Konsolenanwendung erstellt, die das Risiko von Gesundheitsverletzungen mithilfe eines machine learning-Modells kategorisiert, das mit dem Modell-Generator erstellt wurde. Den Quellcode für dieses Lernprogramm finden Sie im GitHub-Repository "dotnet/machinelearning-samples ".

Erstellen einer Konsolenanwendung

Erstellen Sie eine C#-Konsolenanwendung namens "RestaurantViolations".

Vorbereiten und Verstehen der Daten

Das zum Trainieren und Auswerten des Machine Learning-Modells verwendete Dataset stammt ursprünglich aus dem San Francisco Department of Public Health Restaurant Safety Scores. Aus Gründen der Einfachheit wurde das Dataset so zusammengefasst, dass nur die Spalten enthalten sind, die für die Schulung des Modells und das Treffen von Vorhersagen relevant sind. Besuchen Sie die folgende Website, um mehr über das Dataset zu erfahren.

Laden Sie das Dataset "Restaurant Safety Scores" herunter , und entzippen Sie es.

Jede Zeile im Dataset enthält Informationen zu Verstößen, die bei einer Inspektion des Gesundheitsministeriums beobachtet werden, und eine Risikobewertung der Bedrohung, die diese Verletzungen für die öffentliche Gesundheit und Sicherheit darstellen.

Inspektionsart Verletzungsbeschreibung RiskCategory
Routine - Ungeplant Unzureichend gereinigte oder sanitierte Lebensmittelkontaktoberflächen Moderates Risiko
Neue Eigentümerstruktur Hohes Risiko eines Schädlingsbefalls Hohes Risiko
Routine - Nicht geplant Klamotten nicht bzw. nicht ordnungsgemäß gelagert und gewaschen Geringes Risiko
  • InspectionType: die Art der Inspektion. Dies kann entweder eine erstmalige Inspektion für eine neue Einrichtung, eine Routineüberprüfung, eine Beschwerdeprüfung und viele andere Arten sein.
  • ViolationDescription: eine Beschreibung der Verletzung, die während der Inspektion festgestellt wurde.
  • RiskCategory: der Schweregrad des Risikos, das ein Verstoß für den öffentlichen Zustand und die Sicherheit darstellt.

Dies label ist die Spalte, die Sie vorhersagen möchten. Beim Ausführen einer Klassifizierungsaufgabe ist es das Ziel, eine Kategorie (Text oder numerisch) zuzuweisen. In diesem Klassifizierungsszenario wird der Schweregrad der Verletzung dem Wert von geringem, moderatem oder hohem Risiko zugewiesen. Daher ist die RiskCategory die Bezeichnung. Diese features sind die Eingaben, die Sie dem Modell zur Vorhersage des label geben. In diesem Fall werden " InspectionType " und "ViolationDescription " als Features oder Eingaben verwendet, um die RiskCategory vorherzusagen.

Modell-Generator-Konfigurationsdatei erstellen

Beim ersten Hinzufügen des Modell-Generators zur Lösung werden Sie aufgefordert, eine mbconfig Datei zu erstellen. Die mbconfig Datei verfolgt alles, was Sie im Modell-Generator tun, um die Sitzung erneut zu öffnen.

  1. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das RestaurantViolations-Projekt, und wählen Sie"Machine Learning-Modellhinzufügen"> aus.
  2. Nennen Sie das mbconfig Projekt RestaurantViolationsPrediction, und klicken Sie auf die Schaltfläche "Hinzufügen ".

Auswählen eines Szenarios

Bildschirm

Um Ihr Modell zu trainieren, wählen Sie aus der Liste der verfügbaren Machine Learning-Szenarien aus, die vom Modell-Generator bereitgestellt werden. In diesem Fall ist das Szenario die Datenklassifizierung.

  1. Für dieses Beispiel ist die Aufgabe eine Mehrklassenklassifizierung. Wählen Sie im Szenarioschritt des Modell-Generators das Szenario für die Datenklassifizierung aus.

Laden der Daten

Der Modell-Generator akzeptiert Daten aus einer SQL Server-Datenbank oder einer lokalen Datei in csv, tsvoder txt im Format.

  1. Wählen Sie im Datenschritt des Modell-Generator-Tools SQL Server aus der Auswahl des Datenquellentyps aus.
  2. Wählen Sie die Schaltfläche " Datenquelle auswählen " aus.
    1. Wählen Sie im Dialogfeld "Datenquelle auswählen" die Option "Microsoft SQL Server-Datenbankdatei" aus.
    2. Deaktivieren Sie das Kontrollkästchen " Diese Auswahl immer verwenden ", und klicken Sie auf "Weiter".
    3. Wählen Sie im Dialogfeld "Verbindungseigenschaften " die Option "Durchsuchen" aus, und wählen Sie die heruntergeladene RestaurantScores.mdf Datei aus.
    4. Wählen Sie OK aus.
  3. Wählen Sie in der Dropdownliste Tabelle die Option Violations (Verstöße) aus.
  4. Wählen Sie RiskCategory im Dropdown-Menü Vorherzusagende Spalte (Bezeichnung) aus.
  5. Behalten Sie die Standardauswahl in den erweiterten Datenoptionen bei.
  6. Klicken Sie auf die Schaltfläche "Nächster Schritt", um zum Trainingsschritt im Modellersteller zu wechseln.

Trainieren des Modells

Die Machine Learning-Aufgabe, die zum Trainieren des Problemklassifizierungsmodells in diesem Lernprogramm verwendet wird, ist eine mehrklassige Klassifizierung. Während des Modellschulungsprozesses trainiert Der Modell-Generator separate Modelle mit verschiedenen Algorithmen und Einstellungen für die Mehrklassenklassifizierung, um das leistungsstärkste Modell für Ihr Dataset zu finden.

Die Zeit, die das Modell für das Training benötigt, ist abhängig von der Datenmenge. Der Modell-Generator wählt automatisch einen Standardwert für " Time to train" (Sekunden) basierend auf der Größe Der Datenquelle aus.

  1. Der Modell-Generator legt den Wert von "Time to train" (Sekunden) auf 60 Sekunden fest. Die Schulung für einen längeren Zeitraum ermöglicht es dem Modell-Generator, eine größere Anzahl von Algorithmen und eine Kombination von Parametern bei der Suche nach dem besten Modell zu erkunden.
  2. Klicken Sie auf " Schulung starten".

Während des gesamten Schulungsvorgangs werden Fortschrittsdaten im Training results Abschnitt des Trainingsschritts angezeigt.

  • Der Status zeigt den Abschlussstatus des Schulungsvorgangs an.
  • Die beste Genauigkeit zeigt die Genauigkeit des bisher vom Modell-Generator gefundenen Modells mit der besten Leistung an. Eine höhere Genauigkeit bedeutet, dass das Modell bei Testdaten korrekter vorhergesagt hat.
  • Der beste Algorithmus zeigt den Namen des bisher vom Modell-Generator ermittelten leistungsstärksten Algorithmus an.
  • Der letzte Algorithmus zeigt den Namen des Algorithmus an, der zuletzt vom Modell-Generator zum Trainieren des Modells verwendet wird.

Nach Abschluss der Schulung wird die Datei mbconfig das generierte Modell RestaurantViolationsPrediction.zip enthalten und außerdem zwei C#-Dateien.

  • RestaurantViolationsPrediction.consumption.cs: Diese Datei verfügt über eine öffentliche Methode, die das Modell lädt, eine Vorhersage-Engine erstellt und die Vorhersage zurückgibt.
  • RestaurantViolationsPrediction.training.cs: Diese Datei besteht aus der Schulungspipeline, mit der der Modell-Generator das beste Modell erstellt hat, einschließlich aller verwendeten Hyperparameter.

Klicken Sie auf die Schaltfläche "Nächster Schritt ", um zum auswertenden Schritt zu navigieren.

Auswerten des Modells

Das Ergebnis des Trainingsschritts ist ein Modell, das die beste Leistung hatte. Im Bewertungsschritt des Model Builder-Tools enthält der Abschnitt "Bestes Modell" den Algorithmus, der vom besten Modell im Model-Eintrag verwendet wird, sowie Metriken für dieses Modell in Accuracy.

Darüber hinaus gibt es im Ausgabefenster von Visual Studio eine Zusammenfassungstabelle mit top-Modellen und deren Metriken.

In diesem Abschnitt können Sie ihr Modell auch testen, indem Sie eine einzelne Vorhersage ausführen. Es wird Textfelder zum Ausfüllen von Werten angeboten, und Sie können auf die Schaltfläche "Vorhersagen " klicken, um eine Vorhersage vom besten Modell zu erhalten. Standardmäßig wird dies durch eine zufällige Zeile in Ihrem Dataset ausgefüllt.

(Optional) Nutzen des Modells

Dieser Schritt enthält Projektvorlagen, mit denen Sie das Modell nutzen können. Dieser Schritt ist optional und Sie können die Methode auswählen, die Ihren Anforderungen am besten entspricht, um das Modell zu bedienen.

  • Konsolen-App
  • Web-API

Konsolen-App

Wenn Sie Ihrer Lösung eine Konsolen-App hinzufügen, werden Sie aufgefordert, das Projekt zu benennen.

  1. Benennen Sie das Konsolenprojekt RestaurantViolationsPrediction_Console.

  2. Klicken Sie auf "Zu Projektmappe hinzufügen ", um das Projekt ihrer aktuellen Projektmappe hinzuzufügen.

  3. Führen Sie die Anwendung aus.

    Die vom Programm generierte Ausgabe sollte dem folgenden Codeausschnitt ähneln:

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

Web-API

Wenn Sie Ihrer Lösung eine Web-API hinzufügen, werden Sie aufgefordert, das Projekt zu benennen.

  1. Benennen Sie das Web-API-Projekt RestaurantViolationsPrediction_API.

  2. Klicken Sie auf "Zur Lösung hinzufügen*", um das Projekt Ihrer aktuellen Lösung hinzuzufügen.

  3. Führen Sie die Anwendung aus.

  4. Öffnen Sie PowerShell, und geben Sie den folgenden Code ein, bei dem PORT der Port ist, auf den Ihre Anwendung lauscht.

    $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. Wenn sie erfolgreich ist, sollte die Ausgabe dem folgenden Text ähneln. Die Ausgabe hat die vorhergesagte RiskCategory als moderates Risiko und verfügt über die Bewertungen der einzelnen Eingabebezeichnungen – niedriges Risiko, hohes Risiko und moderates Risiko.

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

Glückwunsch! Sie haben erfolgreich ein Machine Learning-Modell erstellt, um das Risiko von Gesundheitsverletzungen mithilfe des Modell-Generators zu kategorisieren. Den Quellcode für dieses Lernprogramm finden Sie im GitHub-Repository "dotnet/machinelearning-samples ".

Weitere Ressourcen

Weitere Informationen zu themen, die in diesem Lernprogramm erwähnt werden, finden Sie in den folgenden Ressourcen: