Partilhar via


Tutorial: Classificar a gravidade das violações de higiene do restaurante com o Construtor de Modelos

Saiba como criar um modelo de classificação multiclasse usando o Construtor de Modelos para categorizar o nível de risco de violações de restaurantes encontradas durante as inspeções de saúde.

Neste tutorial, aprenderás como:

  • Preparar e compreender os dados
  • Criar um arquivo de configuração do Construtor de Modelos
  • Escolha um cenário
  • Carregar dados de um banco de dados
  • Treinar o modelo
  • Avaliar o modelo
  • Use o modelo para previsõ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.

Visão geral da classificação multiclasse do Construtor de Modelos

Este exemplo cria um aplicativo de console em C# que categoriza o risco de violações de integridade usando um modelo de aprendizado de máquina criado com o Construtor de Modelos. Você pode encontrar o código-fonte deste tutorial no repositório GitHub dotnet/machinelearning-samples .

Criar um aplicativo de console

Crie um aplicativo de console em C# chamado "RestaurantViolations".

Preparar e compreender os dados

O conjunto de dados usado para treinar e avaliar o modelo de aprendizado de máquina é originalmente do Departamento de Saúde Pública de São Francisco Restaurant Safety Scores. Por conveniência, o conjunto de dados foi condensado para incluir apenas as colunas relevantes para treinar o modelo e fazer previsões. Visite o seguinte site para saber mais sobre o conjunto de dados.

Faça o download do conjunto de dados das Pontuações de Segurança dos Restaurantes e descompacte-o.

Cada linha do 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 representam para a saúde e segurança públicas.

Tipo de inspeção ViolaçãoDescrição RiskCategory
Rotina - Não programado Superfícies de contacto com alimentos inadequadamente limpas ou higienizadas Risco Moderado
Nova propriedade Infestação por vermes de alto risco Alto Risco
Rotina - Não programado Panos de limpeza não limpos ou devidamente armazenados ou desinfetante inadequado Baixo Risco
  • InspectionType: o tipo de inspeção. Pode ser uma inspeção pela primeira vez para um novo estabelecimento, uma inspeção de rotina, uma inspeção de reclamação e muitos outros tipos.
  • Descrição da Violação: uma descrição da violação encontrada durante a inspeção.
  • Categoria de Risco: a gravidade do risco que uma violação representa para a saúde e a segurança públicas.

A label é a coluna que você deseja prever. Ao executar uma tarefa de classificação, o objetivo é atribuir uma categoria (texto ou numérico). Nesse cenário de classificação, a gravidade da violação recebe o valor de risco baixo, moderado ou alto. Portanto, o RiskCategory é o rótulo. São features as entradas que você dá ao modelo para prever o label. Nesse caso, InspectionType e ViolationDescription são usados como recursos ou entradas para prever a RiskCategory.

Criar arquivo de configuração do Construtor de Modelos

Ao adicionar o Construtor de Modelos à solução pela primeira vez, ele solicitará que você crie um mbconfig arquivo. O arquivo mbconfig controla tudo o que você faz no Construtor de Modelos para permitir que você reabra a sessão.

  1. No Gerenciador de Soluções, clique com o botão direito do mouse no projeto RestaurantViolations e selecione Adicionar>Modelo de Aprendizado de Máquina.
  2. Nomeie o mbconfig projeto RestaurantViolationsPrediction e clique no botão Adicionar .

Escolha um cenário

Ecrã do Cenário do Construtor de Modelos

Para treinar seu modelo, selecione na lista de cenários de aprendizado de máquina disponíveis fornecidos pelo Model Builder. Nesse caso, o cenário é Classificação de dados.

  1. Para este exemplo, a tarefa é classificação multiclasse. Na etapa Cenário do Construtor de Modelos, selecione o cenário de classificação de dados .

Carregue os dados

O Construtor de Modelos aceita dados de um banco de dados do SQL Server ou de um arquivo local no csvformato , tsvou txt .

  1. Na etapa de dados da ferramenta Construtor de Modelos, selecione SQL Server na seleção do tipo de fonte de dados.
  2. Selecione o botão Escolher fonte de dados .
    1. Na caixa de diálogo Escolher Fonte de Dados , selecione Arquivo de Banco de Dados do Microsoft SQL Server.
    2. Desmarque a caixa de seleção Sempre usar esta seleção e clique em Continuar.
    3. Na caixa de diálogo Propriedades da conexão , selecione Procurar e selecione o arquivo de RestaurantScores.mdf baixado.
    4. Selecione OK.
  3. Escolha Violações no menu suspenso Tabela.
  4. Escolha RiskCategory na lista suspensa Column to predict (Label).
  5. Deixe as seleções padrão em Opções avançadas de dados.
  6. Clique no botão Próxima etapa para ir para a etapa de trem no Construtor de modelos.

Treinar o modelo

A tarefa de aprendizado de máquina usada para treinar o modelo de classificação de problemas neste tutorial é a classificação multiclasse. Durante o processo de treinamento do modelo, o Construtor de Modelos treina modelos separados usando diferentes algoritmos e configurações de classificação multiclasse para encontrar o modelo com melhor desempenho para seu conjunto de dados.

O tempo necessário para o modelo treinar é proporcional à quantidade de dados. O Construtor de Modelos seleciona automaticamente um valor padrão para Tempo de treinamento (segundos) com base no tamanho da sua fonte de dados.

  1. O Construtor de Modelos define o valor de Tempo para treinar (segundos) para 60 segundos. O treinamento por um longo período de tempo permite que o Model Builder explore um maior número de algoritmos e combinação de parâmetros em busca do melhor modelo.
  2. Clique em Iniciar treinamento.

Durante todo o processo de formação, os dados de progresso são exibidos na seção Training results da etapa do treino.

  • Status exibe o status de conclusão do processo de treinamento.
  • A melhor precisão exibe a precisão do modelo com melhor desempenho encontrado pelo Construtor de Modelos até agora. Maior precisão significa que o modelo previu mais corretamente nos dados de teste.
  • O melhor algoritmo exibe o nome do algoritmo com melhor desempenho encontrado pelo Construtor de Modelos até agora.
  • O último algoritmo exibe o nome do algoritmo usado mais recentemente pelo Construtor de Modelos para treinar o modelo.

Quando o treinamento for concluído, o mbconfig arquivo terá o modelo gerado chamado RestaurantViolationsPrediction.zip após o treinamento e dois arquivos C# com ele:

  • RestaurantViolationsPrediction.consumption.cs: Este arquivo tem um método público que carregará o modelo e criará um mecanismo de previsão com ele e retornará a previsão.
  • RestaurantViolationsPrediction.training.cs: Este arquivo consiste no pipeline de treinamento que o Model Builder criou para criar o melhor modelo, incluindo quaisquer hiperparâmetros que ele usou.

Clique no botão Próxima etapa para navegar até a etapa de avaliação.

Avaliar o modelo

O resultado da etapa de treinamento será um modelo que teve o melhor desempenho. Na etapa de avaliação da ferramenta Construtor de modelos, na seção Melhor modelo , conterá o algoritmo usado 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, haverá uma tabela de resumo contendo os principais modelos e suas métricas.

Esta seção também permitirá que você teste seu modelo executando uma única previsão. Ele oferecerá caixas de texto para preencher valores e você pode clicar no botão Prever para obter uma previsão do melhor modelo. Por padrão, isso será preenchido por uma linha aleatória no seu conjunto de dados.

(Opcional) Consuma o modelo

Esta etapa terá modelos de projeto que você pode usar para consumir o modelo. Esta etapa é opcional e você pode escolher o método que melhor se adapta às suas necessidades sobre como atender o modelo.

  • Aplicativo de console
  • Web API

Aplicativo de console

Ao adicionar um aplicativo de console à sua solução, você será solicitado a nomear o projeto.

  1. Nomeie o projeto de console RestaurantViolationsPrediction_Console.

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

  3. Execute o aplicativo.

    A saída gerada pelo programa deve ser semelhante ao trecho abaixo:

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

Web API

Ao adicionar uma API da Web à sua solução, você será solicitado a nomear o projeto.

  1. Nomeie o projeto de API Web RestaurantViolationsPrediction_API.

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

  3. Execute o aplicativo.

  4. Abra o PowerShell e insira o código a seguir, onde PORT é a porta em que seu aplicativo está escutando.

    $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-sucedida, a saída deve ser semelhante ao texto abaixo. O resultado tem a Categoria de Risco prevista como Risco Moderado e tem as pontuações de cada um dos rótulos de entrada - Baixo Risco, Alto Risco e Risco Moderado.

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

Parabéns! Você criou com sucesso um modelo de aprendizado de máquina para categorizar o risco de violações de integridade usando o Construtor de Modelos. Você pode encontrar o código-fonte deste tutorial no repositório GitHub dotnet/machinelearning-samples .

Recursos adicionais

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