Tutorial: Klassifizieren des Schweregrads von Integritätsverletzungen in Restaurants mit dem Modell-GeneratorTutorial: Classify the severity of restaurant health violations with Model Builder

Informieren Sie sich, wie Sie mithilfe des Modell-Generators ein Multiklassenklassifizierungsmodell zum Kategorisieren der Risikostufe von Verstößen in Restaurants erstellen, die bei Integritätsprüfungen festgestellt wurden.Learn how to build a multiclass classification model using Model Builder to categorize the risk level of restaurant violations found during health inspections.

In diesem Tutorial lernen Sie, wie die folgenden Aufgaben ausgeführt werden:In this tutorial, you learn how to:

  • Vorbereiten und Verstehen der DatenPrepare and understand the data
  • Auswählen eines SzenariosChoose a scenario
  • Laden von Daten aus einer DatenbankLoad data from a database
  • Trainieren des ModellsTrain the model
  • Evaluieren des ModellsEvaluate the model
  • Verwenden des Modells für VorhersagenUse the model for predictions

Hinweis

Der Modell-Generator befindet sich derzeit in der Vorschauphase.Model Builder is currently in Preview.

Erforderliche KomponentenPrerequisites

Eine Liste der Voraussetzungen und Installationsanweisungen finden Sie in der Installationsanleitung für den Modell-Generator.For a list of prerequisites and installation instructions, visit the Model Builder installation guide.

Übersicht über die Multiklassenklassifizierung des Modell-GeneratorsModel Builder multiclass classification overview

In diesem Beispiel wird eine C# .NET Core-Konsolenanwendung erstellt, die mithilfe eines mit dem Modell-Generator erstellten Machine Learning-Modells das Risiko von Integritätsverstößen kategorisiert.This sample creates a C# .NET Core console application that categorizes the risk of health violations using a machine learning model built with Model Builder. Sie finden den Quellcode für dieses Tutorial im GitHub-Repository dotnet/machinelearning-samples.You can find the source code for this tutorial at the dotnet/machinelearning-samples GitHub repository.

Erstellen einer KonsolenanwendungCreate a console application

  1. Erstellen Sie eine C# .NET Core-Konsolenanwendung mit dem Namen „RestaurantViolations“.Create a C# .NET Core console application called "RestaurantViolations". Stellen Sie sicher, dass die Option zum Platzieren von Projektmappe und Projekt im selben Verzeichnis deaktiviert (VS 2019) oder die Option Verzeichnis für Projektmappe erstellen aktiviert ist (VS 2017).Make sure Place solution and project in the same directory is unchecked (VS 2019), or Create directory for solution is checked (VS 2017).

Vorbereiten und Verstehen der DatenPrepare and understand the data

Das Dataset, das zum Trainieren und Auswerten des Machine Learning-Modells verwendet wird, stammt ursprünglich vom San Francisco Department of Public Health für Integritätsbewertungen von Restaurants.The data set used to train and evaluate the machine learning model is originally from the San Francisco Department of Public Health Restaurant Safety Scores. Aus Gründen der Benutzerfreundlichkeit wurde das Dataset so komprimiert, dass nur die Spalten enthalten sind, die zum Trainieren des Modells und zum Treffen von Vorhersagen relevant sind.For convenience, the dataset has been condensed to only include the columns relevant to train the model and make predictions. Weitere Informationen zum Dataset finden Sie auf der folgenden Website.Visit the following website to learn more about the dataset.

Laden Sie das Dataset „Restaurant Safety Scores“ herunter, und entpacken Sie es.Download the Restaurant Safety Scores dataset and unzip it.

Jede Zeile im Dataset enthält Informationen zu Verstößen, die im Rahmen einer Untersuchung des Gesundheitsamts festgestellt wurden, sowie eine Risikobewertung der aus diesen Verstößen resultierenden Gefahren für die öffentliche Gesundheit und Sicherheit.Each row in the dataset contains information regarding violations observed during an inspection from the Health Department and a risk assessment of the threat those violations present to public health and safety.

InspectionTypeInspectionType ViolationDescriptionViolationDescription RiskCategoryRiskCategory
Routinekontrolle (nicht angekündigt)Routine - Unscheduled Unzureichend gesäuberte oder desinfizierte OberflächenInadequately cleaned or sanitized food contact surfaces Mittleres RisikoModerate Risk
Neuer BesitzerNew Ownership Hohes Risiko durch SchädlingsbefallHigh risk vermin infestation Hohes RisikoHigh Risk
Routinekontrolle (nicht angekündigt)Routine - Unscheduled Klamotten nicht bzw. nicht ordnungsgemäß gelagert und gewaschenWiping cloths not clean or properly stored or inadequate sanitizer Geringes RisikoLow Risk
  • InspectionType: Dies entspricht der Art der Überprüfung.InspectionType: the type of inspection. Dabei kann es sich um eine erstmalige Überprüfung eines neuen Ladens, eine Routineüberprüfung, eine Überprüfung infolge einer Beschwerde usw. handeln.This can either be a first-time inspection for a new establishment, a routine inspection, a complaint inspection, and many other types.
  • ViolationDescription: Dies ist eine Beschreibung des während der Überprüfung festgestellten Verstoßes.ViolationDescription: a description of the violation found during inspection.
  • RiskCategory: Dies beschreibt den Schweregrad des Verstoßes, den dieser für die öffentliche Gesundheit und Sicherheit darstellt.RiskCategory: the risk severity a violation poses to public health and safety.

label ist die Spalte, die vorhergesagt werden soll.The label is the column you want to predict. Beim Ausführen einer Klassifizierungsaufgabe ist es das Ziel, eine Kategorie zuzuweisen (Text oder numerisch).When performing a classification task, the goal is to assign a category (text or numerical). In diesem Klassifizierungsszenario entspricht der Schweregrad des Verstoßes den Werten „geringes Risiko“, „mittleres Risiko“ oder „hohes Risiko“.In this classification scenario, the severity of the violation is assigned the value of low, moderate, or high risk. Daher ist RiskCategory die Bezeichnung.Therefore, the RiskCategory is the label. Die features sind die Eingaben, die Sie dem Modell zum Vorhersagen von label bereitstellen.The features are the inputs you give the model to predict the label. In diesem Fall werden InspectionType und ViolationDescription als Features oder Eingaben verwendet, um RiskCategory vorherzusagen.In this case, the InspectionType and ViolationDescription are used as features or inputs to predict the RiskCategory.

Auswählen eines SzenariosChoose a scenario

Modell-Generator-Assistent in Visual Studio

Wählen Sie aus der vom Modell-Generator bereitgestellten Liste der verfügbaren Machine Learning-Szenarios ein Szenario aus, um Ihr Modell zu trainieren.To train your model, select from the list of available machine learning scenarios provided by Model Builder. In diesem Fall ist das Szenario Issue Classification (Klassifizierung von Issues).In this case, the scenario is Issue Classification.

  1. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das Projekt RestaurantViolations, und wählen Sie Hinzufügen > Machine Learning aus.In Solution Explorer, right-click the RestaurantViolations project, and select Add > Machine Learning.
  2. In diesem Fall ist das Szenario multiclass classification (Multiklassenklassifizierung).For this sample, the scenario is multiclass classification. Wählen Sie im Schritt Szenario des Modell-Generators das Issue Classification-Szenario (Klassifizierung von Issues) aus.In the Scenario step of Model Builder, select the Issue Classification scenario.

Laden der DatenLoad the data

Der Modell-Generator akzeptiert Daten aus einer SQL Server-Datenbank oder aus einer lokalen Datei im csv- oder tsv-Format.Model Builder accepts data from a SQL Server database or a local file in csv or tsv format.

  1. Wählen Sie im Schritt „Daten“ des Modell-Generator-Tools SQL Server aus der Dropdownliste „Datenquelle“ aus.In the data step of the Model Builder tool, select SQL Server from the data source dropdown.
  2. Klicken Sie auf die Schaltfläche neben dem Textfeld Connect to SQL Server database (Verbindung mit SQL Server-Datenbank herstellen).Select the button next to the Connect to SQL Server database text box.
    1. Klicken Sie im Dialogfeld Choose Data (Daten auswählen) auf Microsoft SQL Server-Datenbankdatei.In the Choose Data dialog, select Microsoft SQL Server Database File.
    2. Deaktivieren Sie das Kontrollkästchen Immer diese Auswahl verwenden, und klicken Sie auf Weiter.Uncheck the Always use this selection checkbox and select Continue.
    3. Klicken Sie im Dialogfeld Verbindungseigenschaften auf Durchsuchen, und klicken Sie auf die heruntergeladene Datei RestaurantScores.mdf.In the Connection Properties dialog, select Browse and select the downloaded RestaurantScores.mdf file.
    4. Klicken Sie auf OK.Select OK.
  3. Klicken Sie in der Dropdownliste Tabellenname auf Violations (Verstöße).Choose Violations from the Table Name dropdown.
  4. Klicken Sie in der Dropdownliste Column to Predict (Label) (Vorherzusagende Spalte (Bezeichnung)) die Option RiskCategory aus.Choose RiskCategory in the Column to Predict (Label) dropdown.
  5. Lassen Sie die in der Dropdownliste Input Columns (Features) (Eingabespalten (Features)) aktivierte Standardspaltenauswahl InspectionType und ViolationDescription unverändert.Leave the default column selections, InspectionType and ViolationDescription, checked in the Input Columns (Features) dropdown.
  6. Wählen Sie den Link Trainieren aus, um zum nächsten Schritt im Modell-Generator zu gelangen.Select the Train link to move to the next step in Model Builder.

Trainieren des ModellsTrain the model

Die in diesem Tutorial zum Trainieren des Klassifizierungsmodells für Issues verwendete Machine Learning-Aufgabe ist eine Multiklassenklassifizierung.The machine learning task used to train the issue classification model in this tutorial is multiclass classification. Während des Modelltrainings trainiert der Modell-Generator einzelne Modelle mit verschiedenen Algorithmen und Einstellungen für Multiklassenklassifizierungen, um das leistungsfähigste Modell für Ihr Dataset zu finden.During the model training process, Model Builder trains separate models using different multiclass classification algorithms and settings to find the best performing model for your dataset.

Die Zeit, die für das Trainieren des Modells benötigt wird, ist proportional zur Datenmenge.The time required for the model to train is proportional to the amount of data. Der Modell-Generator legt automatisch einen Standardwert für Time to train (seconds) (Trainingszeit (Sekunden)) basierend auf der Größe der Datenquelle fest.Model Builder automatically selects a default value for Time to train (seconds) based on the size of your data source.

  1. Obwohl der Modell-Generator den Wert von Trainingszeit (Sekunden) auf 10 Sekunden festlegt, erhöhen Sie den Wert auf 30 Sekunden.Although Model Builder sets the value of Time to train (seconds) to 10 seconds, increase it to 30 seconds. Ein längeres Training ermöglicht es dem Modell-Generator, eine größere Anzahl von Algorithmen und Kombinationen von Parametern auf der Suche nach dem besten Modell zu untersuchen.Training for a longer period of time allows Model Builder to explore a larger number of algorithms and combination of parameters in search of the best model.

  2. Wählen Sie Training starten aus.Select Start Training.

    Während des gesamten Trainingsprozesses werden die Fortschrittsdaten im Abschnitt Progress des Schritts „Trainieren“ angezeigt.Throughout the training process, progress data is displayed in the Progress section of the train step.

    • Status zeigt den Abschlussstatus des Trainingsprozesses an.Status displays the completion status of the training process.
    • Best accuracy  (Beste Genauigkeit) zeigt die Genauigkeit des leistungsfähigsten Modells an, das bisher vom Modell-Generator gefunden wurde.Best accuracy displays the accuracy of the best performing model found by Model Builder so far. Eine höhere Genauigkeit bedeutet, dass die Vorhersage des Modells anhand der Testdaten präziser ist.Higher accuracy means the model predicted more correctly on test data.
    • Best algorithm  (Bester Algorithmus) zeigt den Namen des leistungsfähigsten Algorithmus an, der bisher vom Modell-Generator gefunden wurde.Best algorithm displays the name of the best-performing algorithm found by Model Builder so far.
    • Last algorithm  (Letzter Algorithmus) zeigt den Namen des Algorithmus an, der zuletzt vom Modell-Generator zum Trainieren des Modells verwendet wurde.Last algorithm displays the name of the algorithm most recently used by Model Builder to train the model.
  3. Wählen Sie nach Abschluss des Trainings den Link Evaluieren aus, um mit dem nächsten Schritt fortzufahren.Once training is complete, select the Evaluate link to move to the next step.

Evaluieren des ModellsEvaluate the model

Das Ergebnis des Schritts „Trainieren“ ist das Modell mit der besten Leistung.The result of the training step is the one model that had the best performance. Im Schritt „Evaluieren“ des Modell-Generators enthält der Ausgabebereich den Algorithmus, der vom leistungsfähigsten Modell im Eintrag Best Model (Bestes Modell) verwendet wird, sowie Metriken in Best Model Accuracy (Beste Modellgenauigkeit).In the evaluate step of Model Builder, the output section contains the algorithm used by the best performing model in the Best Model entry along with metrics in Best Model Accuracy. Zusätzlich werden eine Zusammenfassungstabelle mit bis zu fünf untersuchten Modellen und deren Metriken angezeigt.Additionally, a summary table containing up to five models that were explored and their metrics is displayed.

Wenn Sie mit Ihren Genauigkeitsmetriken nicht zufrieden sind, gibt es einige einfache Möglichkeiten, die Modellgenauigkeit zu verbessern, indem Sie beispielsweise die Zeit für das Training des Modells erhöhen oder mehr Daten verwenden.If you're not satisfied with your accuracy metrics, some easy ways to try to improve model accuracy are to increase the amount of time to train the model or use more data. Klicken Sie andernfalls auf den Link Code, um zum letzten Schritt im Modell-Generator zu gelangen.Otherwise, select the code link to move to the final step in Model Builder.

Hinzufügen des Codes für VorhersagenAdd the code to make predictions

Als Ergebnis des Trainingsprozesses werden zwei Projekte erstellt.Two projects are created as a result of the training process.

  • RestaurantViolationsML.ConsoleApp: Dies ist eine .NET Core-Konsolenanwendung, die den Modelltrainings- und Beispielverbrauchscode enthält.RestaurantViolationsML.ConsoleApp: A C# .NET Core Console application that contains the model training and sample consumption code.
  • RestaurantViolationsML.Model: Dies ist eine .NET Standard-Klassenbibliothek, die die Datenmodelle enthält, die das Schema der Eingabe- und Ausgabemodelldaten, die gespeicherte Version des leistungsfähigsten Modells während des Trainings sowie eine Hilfsklasse namens ConsumeModel definieren, um Vorhersagen zu treffen.RestaurantViolationsML.Model: A .NET Standard class library containing the data models that define the schema of input and output model data, the saved version of the best performing model during training, and a helper class called ConsumeModel to make predictions.
  1. Wählen Sie im Schritt „Code“ des Modell-Generators die Option Projekte hinzufügen aus, um der Projektmappe die automatisch generierten Projekte hinzuzufügen.In the code step of Model Builder, select Add Projects to add the autogenerated projects to the solution.

  2. Öffnen Sie die Datei Program.cs im Projekt RestaurantViolations.Open the Program.cs file in the RestaurantViolations project.

  3. Fügen Sie die folgende using-Anweisung hinzu, um auf das Projekt RestaurantViolationsML.Model zu verweisen:Add the following using statement to reference the RestaurantViolationsML.Model project:

    using RestaurantViolationsML.Model;
    
  4. Um eine Vorhersage für neue Daten mithilfe des Modells zu erstellen, erstellen Sie eine neue Instanz der Klasse ModelInput innerhalb der Main-Methode Ihrer Anwendung.To make a prediction on new data using the model, create a new instance of the ModelInput class inside the Main method of your application. Beachten Sie, dass die Risikokategorie nicht Teil der Eingabe ist.Notice that the risk category is not part of the input. Das liegt daran, dass das Modell die Vorhersage dafür generiert.This is because the model generates the prediction for it.

    ModelInput input = new ModelInput
    {
        InspectionType = "Complaint",
        ViolationDescription = "Inadequate sewage or wastewater disposal"
    };
    
  5. Verwenden Sie die Predict-Methode aus der ConsumeModel-Klasse.Use the Predict method from the ConsumeModel class. Die Predict-Methode lädt das trainierte Modell, erstellt eine PredictionEngine für das Modell und verwendet sie, um Vorhersagen für neue Daten zu generieren.The Predict method loads the trained model, creates a PredictionEngine for the model, and uses it to make predictions on new data.

    // Make prediction
    ModelOutput result = ConsumeModel.Predict(input);
    
    // Print Prediction
    Console.WriteLine($"Inspection type: {input.InspectionType}");
    Console.WriteLine($"Violation description: {input.ViolationDescription}");
    Console.WriteLine($"Predicted risk category: {result.Prediction}");
    Console.ReadKey();
    
  6. Führen Sie die Anwendung aus.Run the application.

    Die vom Programm generierte Ausgabe sollte wie der folgende Ausschnitt aussehen:The output generated by the program should look similar to the snippet below:

    Inspection Type: Complaint
    Violation Description: Inadequate sewage or wastewater disposal
    Risk Category: Moderate Risk
    

Wenn Sie zu einem späteren Zeitpunkt innerhalb einer anderen Projektmappe auf die generierten Projekte verweisen müssen, finden Sie diese im Verzeichnis C:\Users\%USERNAME%\AppData\Local\Temp\MLVSTools.If you need to reference the generated projects at a later time inside of another solution, you can find them inside the C:\Users\%USERNAME%\AppData\Local\Temp\MLVSTools directory.

Herzlichen Glückwunsch!Congratulations! Sie haben mithilfe des Modell-Generators erfolgreich ein Machine Learning-Modell zum Kategorisieren des Risikos von Integritätsverstößen erstellt.You've successfully built a machine learning model to categorize the risk of health violations using Model Builder. Sie finden den Quellcode für dieses Tutorial im GitHub-Repository dotnet/machinelearning-samples.You can find the source code for this tutorial at the dotnet/machinelearning-samples GitHub repository.

Zusätzliche RessourcenAdditional resources

Weitere Informationen zu den in diesem Tutorial erwähnten Themen finden Sie in den folgenden Ressourcen:To learn more about topics mentioned in this tutorial, visit the following resources: