Tutorial: Classificar a gravidade das violações de saúde do restaurante com o Model Builder
Artigo
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
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.
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 csvformato , tsvou 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:
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.
PowerShell
$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.
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:
A origem deste conteúdo pode ser encontrada no GitHub, onde também pode criar e rever problemas e pedidos Pull. Para mais informações, consulte o nosso guia do contribuidor.
Comentários do .NET
O .NET é um projeto código aberto. Selecione um link para fornecer comentários:
Neste módulo, você aprenderá a usar ML.NET Construtor de Modelos para treinar e consumir um modelo de aprendizado de máquina para manutenção preditiva.
Gerencie a ingestão e a preparação de dados, o treinamento e a implantação de modelos e o monitoramento de soluções de aprendizado de máquina com Python, Azure Machine Learning e MLflow.
Este tutorial mostra como criar um aplicativo Razor Pages que classifica o sentimento dos comentários do site e toma as medidas apropriadas. A classificação usa o cenário de Classificação de Texto na extensão do Visual Studio do Construtor de Modelos.
Este tutorial ilustra como criar um modelo de regressão com o ML.NET Model Builder para prever preços, especificamente, tarifas de táxi de Nova Iorque.
Descubra como usar a programação probabilística com Infer.NET para criar um aplicativo de lista de correspondência de jogos com base em uma versão simplificada do TrueSkill.