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
- 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.
- No Explorador de Soluções, clique com o botão direito do rato no projeto RestaurantViolations e selecione Adicionar>Modelo de Machine Learning....
- Atribua o
mbconfig
nome RestaurantViolationsPrediction ao projeto e clique no botão Adicionar .
Escolher um cenário
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.
- 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 csv
formato , tsv
ou txt
.
- No passo de dados da ferramenta Model Builder, selecione SQL Server na seleção do tipo de origem de dados.
- Selecione o botão Escolher origem de dados .
- Na caixa de diálogo Escolher Origem de Dados, selecione Microsoft SQL Server Ficheiro de Base de Dados.
- Desmarque a caixa de verificação Utilizar sempre esta seleção e clique em Continuar.
- Na caixa de diálogo Propriedades da Ligação, selecione Procurar e selecione o ficheiro RestaurantScores.mdf transferido.
- Selecione OK.
- Selecione Violações na lista pendente Tabela.
- Selecione RiskCategory na lista pendente Coluna a prever (Etiqueta).
- Deixe as seleções predefinidas em Opções de dados avançadas.
- 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.
- 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.
- 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.
Atribua o nome RestaurantViolationsPrediction_Console projeto da consola.
Clique em Adicionar à solução para adicionar o projeto à sua solução atual.
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.
Dê o nome RestaurantViolationsPrediction_API projeto da API Web.
Clique em Adicionar à solução* para adicionar o projeto à sua solução atual.
Execute a aplicação.
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"
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: