Partilhar via


Tutorial: Classificar a gravidade das violações de saúde do restaurante com o Model Builder

Saiba como criar um modelo de classificação multiclasse com o Model Builder para categorizar o nível de risco das violações de restaurantes encontradas durante as inspeções de estado de funcionamento.

Neste tutorial, ficará a saber como:

  • Preparar e compreender os dados
  • Criar um ficheiro de configuração do Model Builder
  • Escolher um cenário
  • Carregar dados de uma base de dados
  • Preparar o modelo
  • Avaliar o modelo
  • Utilizar o modelo para predições

Pré-requisitos

Para obter uma lista de pré-requisitos e instruções de instalação, visite o Guia de instalação do Model Builder.

Descrição geral da classificação de várias classes do Model Builder

Este exemplo cria uma aplicação de consola C# .NET Core que categoriza o risco de violações de estado de funcionamento com um modelo de machine learning criado com o Model Builder. Pode encontrar o código fonte deste tutorial no repositório do GitHub dotnet/machinelearning-samples .

Criar uma aplicação de consola

  1. Crie uma aplicação de consola C# .NET Core denominada "RestaurantViolations".

Preparar e compreender os dados

O conjunto de dados utilizado para preparar e avaliar o modelo de machine learning é originalmente do Departamento de Saúde Pública de São Francisco . Para sua comodidade, o conjunto de dados foi condensado para incluir apenas as colunas relevantes para preparar o modelo e fazer predições. Visite o seguinte site para saber mais sobre o conjunto de dados.

Transfira o conjunto de dados Pontuações de Segurança do Restaurante e deszipe-o.

Cada linha no conjunto de dados contém informações sobre violações observadas durante uma inspeção do Departamento de Saúde e uma avaliação de risco da ameaça que essas violações apresentam à saúde pública e segurança.

InspectionType ViolationDescription RiskCategory
Rotina - Não Agendada Superfícies de contacto de alimentos inadequadamente limpas ou limpas Risco Moderado
Nova Propriedade Infestação de administradores de alto risco Alto Risco
Rotina - Não Agendada Limpar panos não limpos ou devidamente armazenados ou desinspirador inadequado Baixo Risco
  • InspectionType: o tipo de inspeção. Isto pode ser uma inspecção pela primeira vez para um novo estabelecimento, uma inspecção de rotina, uma inspecção de reclamação, e muitos outros tipos.
  • ViolationDescription: uma descrição da violação encontrada durante a inspeção.
  • RiskCategory: a gravidade do risco que uma violação representa para a saúde pública e segurança.

É label a coluna que pretende prever. Ao realizar uma tarefa de classificação, o objetivo é atribuir uma categoria (texto ou numérico). Neste cenário de classificação, é atribuído o valor de risco baixo, moderado ou elevado à gravidade da violação. Por conseguinte, RiskCategory é a etiqueta. São features as entradas que dá ao modelo para prever o label. Neste caso, o InspectionType e ViolationDescription são utilizados como funcionalidades ou entradas para prever a RiskCategory.

Criar Ficheiro de Configuração do Model Builder

Quando adicionar o Model Builder pela primeira vez à solução, irá pedir-lhe para criar um mbconfig ficheiro. O mbconfig ficheiro controla tudo o que faz no Model Builder para permitir que reabra a sessão.

  1. No Explorador de Soluções, clique com o botão direito do rato no projeto RestaurantViolations e selecione Adicionar>Modelo de Machine Learning....
  2. Atribua o mbconfig nome RestaurantViolationsPrediction ao projeto e clique no botão Adicionar .

Escolher um cenário

Ecrã de Cenário do Model Builder

Para preparar o modelo, selecione a partir da lista de cenários de machine learning disponíveis fornecidos pelo Model Builder. Neste caso, o cenário é Classificação de dados.

  1. Para este exemplo, a tarefa é classificação de várias classes. No passo Cenário do Model Builder, selecione o cenário Classificação de dados .

Carregar os dados

O Model Builder aceita dados de uma base de dados SQL Server ou de um ficheiro local no csvformato , tsvou txt .

  1. No passo de dados da ferramenta Model Builder, selecione SQL Server na seleção do tipo de origem de dados.
  2. Selecione o botão Escolher origem de dados .
    1. Na caixa de diálogo Escolher Origem de Dados, selecione Microsoft SQL Server Ficheiro de Base de Dados.
    2. Desmarque a caixa de verificação Utilizar sempre esta seleção e clique em Continuar.
    3. Na caixa de diálogo Propriedades da Ligação, selecione Procurar e selecione o ficheiro RestaurantScores.mdf transferido.
    4. Selecione OK.
  3. Selecione Violações na lista pendente Tabela.
  4. Selecione RiskCategory na lista pendente Coluna a prever (Etiqueta).
  5. Deixe as seleções predefinidas em Opções de dados avançadas.
  6. Clique no botão Passo seguinte para ir para o passo de preparação no Model Builder.

Preparar o modelo

A tarefa de machine learning utilizada para preparar o modelo de classificação de problemas neste tutorial é a classificação de várias classes. Durante o processo de preparação de modelos, o Model Builder prepara modelos separados através de diferentes algoritmos e definições de classificação de várias classes para encontrar o modelo com melhor desempenho para o seu conjunto de dados.

O tempo necessário para o modelo ser preparado é proporcional à quantidade de dados. O Model Builder seleciona automaticamente um valor predefinido para Time to train (seconds) com base no tamanho da sua origem de dados.

  1. O Model Builder define o valor de Tempo a preparar (segundos) para 60 segundos. A preparação para um período de tempo mais longo permite ao Model Builder explorar um maior número de algoritmos e combinação de parâmetros em busca do melhor modelo.
  2. Clique em Iniciar Formação.

Ao longo do processo de preparação, os dados de progresso são apresentados na Training results secção do passo de preparação.

  • O estado apresenta o estado de conclusão do processo de preparação.
  • A melhor precisão apresenta a precisão do modelo com melhor desempenho encontrado até agora pelo Model Builder. Maior precisão significa que o modelo previu mais corretamente os dados de teste.
  • O melhor algoritmo apresenta o nome do algoritmo de melhor desempenho executado até agora pelo Model Builder.
  • O último algoritmo apresenta o nome do algoritmo utilizado mais recentemente pelo Model Builder para preparar o modelo.

Assim que a preparação estiver concluída, o mbconfig ficheiro terá o modelo gerado chamado RestaurantViolationsPrediction.zip após a preparação e dois ficheiros C# com o mesmo:

  • RestaurantViolationsPrediction.consumption.cs: este ficheiro tem um método público que irá carregar o modelo e criar um motor de predição com o mesmo e devolver a predição.
  • RestaurantViolationsPrediction.training.cs: este ficheiro consiste no pipeline de preparação que o Model Builder criou para criar o melhor modelo, incluindo os hiperparâmetros que utilizou.

Clique no botão Passo seguinte para navegar para o passo de avaliação.

Avaliar o modelo

O resultado do passo de preparação será um modelo que teve o melhor desempenho. No passo de avaliação da ferramenta Model Builder, na secção Melhor modelo , irá conter o algoritmo utilizado pelo modelo com melhor desempenho na entrada Modelo , juntamente com métricas para esse modelo em Precisão.

Além disso, na janela Saída do Visual Studio, existirá uma tabela de resumo que contém os principais modelos e as respetivas métricas.

Esta secção também lhe permitirá testar o modelo ao realizar uma única predição. Irá oferecer caixas de texto para preencher valores e pode clicar no botão Prever para obter uma predição do melhor modelo. Por predefinição, esta ação será preenchida por uma linha aleatória no conjunto de dados.

(Opcional) Consumir o modelo

Este passo terá modelos de projeto que pode utilizar para consumir o modelo. Este passo é opcional e pode escolher o método mais adequado às suas necessidades sobre como servir o modelo.

  • Aplicação de Consola
  • API Web

Aplicação de Consola

Ao adicionar uma aplicação de consola à sua solução, ser-lhe-á pedido para atribuir um nome ao projeto.

  1. Atribua o nome RestaurantViolationsPrediction_Console projeto da consola.

  2. Clique em Adicionar à solução para adicionar o projeto à sua solução atual.

  3. Execute a aplicação.

    O resultado gerado pelo programa deve ter um aspeto semelhante ao fragmento abaixo:

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

API Web

Ao adicionar uma API Web à sua solução, ser-lhe-á pedido que atribua um nome ao projeto.

  1. Dê o nome RestaurantViolationsPrediction_API projeto da API Web.

  2. Clique em Adicionar à solução* para adicionar o projeto à sua solução atual.

  3. Execute a aplicação.

  4. Abra o PowerShell e introduza o seguinte código em que PORT é a porta em que a sua aplicação está a escutar.

    $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. Se for bem-sucedido, o resultado deverá ter um aspeto semelhante ao texto abaixo. O resultado tem a RiskCategory prevista como Risco Moderado e tem as pontuações de cada uma das etiquetas de entrada - Baixo Risco, Alto Risco e Risco Moderado.

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

Parabéns! Criou com êxito um modelo de machine learning para categorizar o risco de violações de estado de funcionamento com o Model Builder. Pode encontrar o código fonte deste tutorial no repositório do GitHub dotnet/machinelearning-samples .

Recursos adicionais

Para saber mais sobre os tópicos mencionados neste tutorial, visite os seguintes recursos: