Use o ML.NET Model Builder no Visual Studio para treinar e usar seu primeiro modelo de machine learning com o ML.NET.
Instale a ML.NET CLI e, em seguida, treine e use seu primeiro modelo de machine learning com ML.NET.
Nenhum.
macOS 10.15 ou versões posteriores.
10 minutos + tempo de download/instalação
Um aplicativo que pode prever se o texto das revisões do cliente é um sentimento negativo ou positivo.
Baixe e instale o Visual Studio 2022.
Durante a instalação, a carga de trabalho de desenvolvimento para .NET desktop deve ser selecionada junto com o componente opcional do ML.NET Model Builder. Usando o link acima deve pré-selecionar todos os pré-requisitos corretamente, como mostrado na imagem a seguir:
Se você já tiver o Visual Studio 2022, poderá adicionar a carga de trabalho Desenvolvimento de área de trabalho do .NET:
Depois de habilitar o ML.NET Model Builder no Visual Studio, baixe e instale a versão mais recente.
Baixe a versão mais recente do Model Builder
Este tutorial foi otimizado para a versão mais recente do Visual Studio. Se você já tem o Visual Studio 2022, poderá verificar se há atualizações:
Para criar aplicativos .NET, você precisa baixar e instalar o SDK do .NET 6 (Software Development Kit).
Baixar o SDK do .NET 6 (64 bits)
Download do Arm64
Se você estiver em um Mac com um chip Apple M1, precisará instalar a versão Arm64 do SDK.
A interface de linha de comando (CLI) do ML.NET fornece ferramentas para criar modelos de aprendizado de máquina com ML.NET.
Observação: no momento, ML.NET CLI está na Versão Prévia e dá suporte apenas à versão LTS mais recente do SDK do .NET (.NET 6).
Depois de instalar o SDK do .NET 6, abra um novo terminal e execute o seguinte comando se estiver em um computador x64:
dotnet tool install -g mlnet-linux-x64
Para arquiteturas de chip ARM64, execute o seguinte comando:
dotnet tool install -g mlnet-linux-arm64
Se a ferramenta for instalada com êxito, você deverá ver a seguinte mensagem de saída em que [arch]
é a arquitetura do chip:
You can invoke the tool using the following command: mlnet
Tool 'mlnet-linux-[arch]' (version '16.13.9') was successfully installed.
dotnet tool install -g mlnet-osx-x64
Para arquiteturas de chip ARM64, execute o seguinte comando:
dotnet tool install -g mlnet-osx-arm64
Se a ferramenta for instalada com êxito, você deverá ver a seguinte mensagem de saída em que [arch]
é a arquitetura do chip semelhante ao seguinte:
You can invoke the tool using the following command: mlnet
Tool 'mlnet-osx-[arch]' (version '16.14.3') was successfully installed.
Observação: Se você estiver usando um console diferente do Bash (por exemplo, zsh, que é o novo padrão para macOS), você precisará conceder permissões executáveis mlnet
e incluir mlnet
ao caminho do sistema. As instruções sobre como fazer isso devem aparecer no terminal quando você instalar o mlnet (ou qualquer ferramenta global). Em geral, o comando a seguir deve funcionar para a maioria dos sistemas: chmod +x [PATH-TO-MLNET-CLI-EXECUTABLE]
Como alternativa, você pode tentar usar o seguinte comando para executar a ferramenta mlnet:
~/.dotnet/tools/mlnet
Se o comando ainda fornecer um erro, use o botão Ocorreu um problema abaixo para relatar o problema e obter ajuda para corrigir o problema.
Abra o Visual Studio e crie um novo aplicativo de console .NET:
myMLApp
.Program.cs
.Clique com o botão direito do mouse no projeto myMLApp
no Gerenciador de Soluções e selecione Adicionar > Modelo de Machine Learning.
Altere o campo Nome para SentimentModel.mbconfig
e selecione o botão Adicionar.
Um novo arquivo chamado SentimentModel.mbconfig
é adicionado à sua solução e a interface do usuário do Model Builder abre em uma nova janela de ferramentas encaixada no Visual Studio. O arquivo mbconfig é simplesmente um arquivo JSON que acompanha o estado da interface do usuário.
O Model Builder orientará você pelo processo de criação de um modelo de machine learning nas etapas a seguir.
Em seu terminal, execute os seguintes comandos:
mkdir myMLApp
cd myMLApp
O comando mkdir
cria um novo diretório chamado myMLApp
, e o comando cd myMLApp
coloca você no diretório de aplicativos recém-criado.
O código de treinamento do modelo será gerado nas próximas etapas.
Para gerar seu modelo, primeiro você precisa selecionar seu cenário de aprendizado de máquina. O Model Builder dá suporte a vários cenários:
Observação: se as capturas de tela do tutorial não corresponderem ao que você vê, talvez seja necessário atualizar sua versão do Model Builder. Vá para Extensões > Gerenciar Extensões para garantir que não haja atualizações disponíveis para o Model Builder. A versão usada neste tutorial é 16.14.0.
Nesse caso, você preverá o sentimento com base no conteúdo (texto) das revisões do cliente.
Na tela Cenário do Model Builder, selecione o cenário Classificação de dados, já que você está prevendo em qual categoria um comentário se enquadra (positivo ou negativo).
Depois de selecionar o cenário Classificação de dados, você deve escolher seu ambiente de treinamento. Embora alguns cenários deem suporte ao treinamento no Azure, a Classificação atualmente dá suporte apenas ao treinamento local, portanto, mantenha o ambiente Local selecionado e vá para o passo Dados.
Para gerar seu modelo, você precisa de selecionar seu cenário de aprendizado de máquina.
Há vários cenários de ML que são suportados pelo ML.NET CLI:
Nesse caso, você preverá o sentimento com base no conteúdo (texto) das revisões do cliente, portanto, você usará classificação.
Baixe o Conjuntos de dados de frases rotuladas por reconhecimento do UCI. Descompacte sentiment labelled sentences.zip
e salve o arquivo yelp_labelled.txt
no diretório myMLApp
.
Cada linha em yelp_labelled.txt
representa uma análise diferente de um restaurante deixada por um usuário no Yelp. A primeira coluna representa o comentário deixado pelo usuário e a segunda coluna representa o sentimento do texto (0 é negativo, 1 é positivo). As colunas são separadas por guias, e o conjunto de dados não tem cabeçalho. Os dados se parecem com o seguinte:
Wow... Loved this place. 1
Crust is not good. 0
Not tasty and the texture was just nasty. 0
No Model Builder, você pode adicionar dados de um arquivo local ou conectar-se a um banco de dados do SQL Server. Nesse caso, você adicionará yelp_labelled.txt
de um arquivo.
Selecione Arquivo como o tipo de fonte de dados de entrada.
Procure yelp_labelled.txt
. Depois de selecionar o conjunto de dados, uma visualização dos dados será exibida na seção Visualização de Dados. Como o conjunto de dados não tem um cabeçalho, os cabeçalhos são gerados automaticamente ("col0" e "col1").
Em coluna para prever (Rótulo) , selecione "col1". O Rótulo é o que você está prevendo, que, nesse caso, é o sentimento encontrado na segunda coluna ("col1") do conjunto de dados.
As colunas usadas para prever o Rótulo são chamadas de Funcionalidade. Todas as colunas do conjunto de dados, exceto o Rótulo, são automaticamente selecionadas como Funcionalidades. Neste caso, a coluna de comentários de revisão ("col0") é a coluna de Funcionalidade. Você pode atualizar a coluna de Funcionalidade e modificar outras opções de carregamento de dados nas Opções de dados avançados, mas isto não é necessário para este exemplo.
Depois de adicionar seus dados, vá para a etapa Treinar.
Agora, você treinará seu modelo com o conjunto de dados yelp_labelled.txt
.
O Model Builder avalia muitos modelos com configurações e algoritmos variados com base na quantidade de tempo de treinamento fornecido para criar o modelo com melhor desempenho.
Altere o Tempo para treinar, que é a quantidade de tempo que você gostaria que o Model Builder explorasse vários modelos, para 60 segundos (você pode tentar aumentar esse número se nenhum modelo for encontrado após o treinamento). Observe que para os conjuntos de dados maiores, o tempo de treinamento será maior. O Model Builder ajusta automaticamente o tempo de treinamento com base no tamanho do conjunto de dados.
Selecione inciar treinamento para iniciar o processo de treinamento. Depois que o treinamento for iniciado, você poderá ver o tempo restante.
Quando o treinamento for concluído, você poderá ver um resumo dos resultados de treinamento.
Se desejar, você pode exibir mais informações sobre a sessão de treinamento na janela de saída de Machine Learning.
Após a conclusão do treinamento do modelo, vá para a etapa Avaliar.
No seu terminal, execute o seguinte comando (em sua myMLApp
pasta):
mlnet classification --dataset "yelp_labelled.txt" --label-col 1 --has-header false --name SentimentModel --train-time 60
O comando mlnet classification
executa o ML.NET com AutoML para explorar muitas iterações de modelos de classificação no tempo de treinamento especificado com combinações variáveis de transformações de dados, algoritmos e opções de algoritmo e, em seguida, escolhe o modelo com o maior desempenho.
yelp_labelled.txt
como o conjunto de dados (internamente, a CLI dividirá o conjunto de dados em conjuntos de dados de treinamento e teste).Enquanto a CLI do ML.NET está explorando modelos diferentes, ela exibe os seguintes dados:
Se desejar, você pode exibir mais informações sobre a sessão de treinamento no arquivo de log gerado pela CLI.
A etapa Avaliar mostra o algoritmo de melhor desempenho e a melhor precisão e permite experimentar o modelo na interface do usuário.
Você pode fazer previsões na entrada de amostras na seção Experimente seu modelo. A caixa de texto é pré-preenchida com a primeira linha de dados do seu conjunto de dados, mas você pode alterar a entrada e selecionar o botão Previsão para experimentar previsões de sentimento diferentes.
Nesse caso, 0 significa um sentimento negativo e 1 significa um sentimento positivo.
Observação: se o seu modelo não estiver funcionando bem (por exemplo, se a precisão for baixa ou se o modelo prever apenas valores “1”), tente adicionar mais tempo e treinar novamente. Este exemplo usa um conjunto de dados muito pequeno; para modelos de nível de produção, talvez você queira adicionar muito mais dados e tempo de treinamento.
Após avaliar e experimentar o modelo, vá para a etapa Consumir.
Depois que a CLI do ML.NET selecionar o melhor modelo, ela exibirá o resumo de treinamento, que mostra um resumo do processo de exploração, incluindo quantos modelos foram explorados no tempo de treinamento especificado.
Embora a CLI do ML.NET gere código para o modelo de melhor desempenho, ela também exibe os modelos superiores (até 5) com a precisão mais alta que encontrou no tempo de exploração especificado. Ela exibe várias métricas de avaliação dos principais modelos, incluindo AUC, AUPRC e medida f. Para obter mais informações, confira métricas do ML.NET.
Após a conclusão do treinamento, três arquivos são automaticamente adicionados como code-behind ao SentimentModel.mbconfig
:
SentimentModel.zip
: este arquivo é o modelo ML.NET treinado, que é um arquivo zip serializado.SentimentModel.consumption.cs
: este arquivo contém as classes de modelo de entrada e saída e um método de Predict
que pode ser usado para o consumo de modelos.SentimentModel.training.cs
: este arquivo contém o pipeline de treinamento (transformações de dados, algoritmo e parâmetros de algoritmo) usado para treinar o modelo final.Na etapa Consumir no Model Builder, é fornecido um trecho de código que cria uma entrada de exemplo para o modelo e usa o modelo para fazer uma previsão nessa entrada.
O Model Builder também oferece Modelos de projeto que você pode adicionar opcionalmente à sua solução. Há dois modelos de projeto (um aplicativo de console e uma API Web), ambos consomem o modelo treinado.
A CLI do ML.NET adiciona o modelo de machine learning e o código para treinamento e consumo do modelo, o que inclui o seguinte:
Program.cs
: este arquivo contém o código para executar o modelo.SentimentModel.consumption.cs
: este arquivo contém as classes de modelo de entrada e saída e um método de Predict
que pode ser usado para o consumo de modelos.SentimentModel.mbconfig
: este arquivo é um arquivo JSON que mantém o controle das configurações e dos resultados do seu treinamento.SentimentModel.training.cs
: este arquivo contém o pipeline de treinamento (transformações de dados, algoritmo e parâmetros de algoritmo) usado para treinar o modelo final.SentimentModel.zip
: este arquivo é o modelo ML.NET treinado, que é um arquivo zip serializado.Para tentar o modelo, você pode executar o aplicativo de console para prever o sentimento de uma única instrução com o modelo.
A última etapa é consumir seu modelo treinado no aplicativo do usuário final.
Substitua o código Program.cs
em seu projeto myMLApp
com o seguinte código:
using MyMLApp;
// Add input data
var sampleData = new SentimentModel.ModelInput()
{
Col0 = "This restaurant was wonderful."
};
// Load model and predict output of sample data
var result = SentimentModel.Predict(sampleData);
// If Prediction is 1, sentiment is "Positive"; otherwise, sentiment is "Negative"
var sentiment = result.PredictedLabel == 1 ? "Positive" : "Negative";
Console.WriteLine($"Text: {sampleData.Col0}\nSentiment: {sentiment}");
Execute myMLApp
(selecione Ctrl+F5 ou Depuração > Iniciar sem depuração). Você deve ver a saída a seguir, prevendo se a instrução de entrada é positiva ou negativa.
A CLI do ML.NET gerou o modelo e o código treinados para você, portanto, agora você pode usar o modelo em aplicativos .NET (por exemplo, seu aplicativo de console SentimentModel
) seguindo estas etapas:
consumeModelApp
.
cd SentimentModel
Abra o Program.cs
em qualquer editor de código e inspecione o código. O código deve ser semelhante ao seguinte:
using System;
namespace SentimentModel.ConsoleApp
{
class Program
{
static void Main(string[] args)
{
// Add input data
SentimentModel.ModelInput sampleData = new SentimentModel.ModelInput()
{
Col0 = @"Wow... Loved this place."
};
// Make a single prediction on the sample data and print results
var predictionResult = SentimentModel.Predict(sampleData);
Console.WriteLine("Using model to make single prediction -- Comparing actual Col1 with predicted Col1 from sample data...\n\n");
Console.WriteLine($"Col0: @{"Wow... Loved this place."}");
Console.WriteLine($"Col1: {1F}");
Console.WriteLine($"\n\nPredicted Col1: {predictionResult.PredictedLabel}\n\n");
Console.WriteLine("=============== End of process, hit any key to finish ===============");
Console.ReadKey();
}
}
}
Execute seu SentimentModel.ConsoleApp
. Você pode fazer isso executando o comando a seguir no terminal (verifique se você está no diretório SentimentModel
):
dotnet run
A saída deve ser algo parecido com isto:
Using model to make single prediction -- Comparing actual Col1 with predicted Col1 from sample data...
Col0: Wow... Loved this place.
Col1: 1
Predicted Col1: 1
=============== End of process, hit any key to finish ===============
Parabéns, você criou seu primeiro modelo de machine learning com o ML.NET Model Builder!
Agora que você tem as noções básicas, continue com isso com o módulo de aprendizado autoguiado no Microsoft Learn, em que você usará os dados do sensor para detectar se um dispositivo de fabricação está quebrado.
Microsoft Learn: Treine um modelo de manutenção preditiva
Deixe o Pranav apresentar o conceito de aprendizado de máquina, o que você pode fazer com ele e como começar a usar o ML.NET:
Você também pode estar interessado em...
Parabéns, você criou seu primeiro modelo de machine learning com a CLI do ML.NET!
Agora que você usou o ML.NET CLI para Classificação (especificamente análise de sentimentos), você pode tentar outros cenários. Experimente um cenário de regressão (especificamente previsão de preço) usando o conjunto de dados de Valor do Táxi para continuar compilando modelos de ML.NET com o ML.NET CLI.
Baixar o conjunto de dados tarifas de táxi
Deixe o Pranav apresentar o conceito de aprendizado de máquina, o que você pode fazer com ele e como começar a usar o ML.NET:
Você também pode estar interessado em...