Compartilhar via


Tutorial: Criar uma recomendação de filme usando a fatoração de matriz com ML.NET

Este tutorial mostra como criar uma recomendação de filme do ML.NET em um aplicativo de console do .NET Core. AS etapas usam C# e o Visual Studio 2019.

Neste tutorial, você aprenderá a:

  • Selecionar um algoritmo de aprendizado de máquina
  • Preparar e carregar os dados
  • Criar e treinar um modelo
  • Avaliar um modelo
  • Implantar e consumir um modelo

Você pode encontrar o código-fonte para este tutorial no repositório dotnet/samples.

Fluxo de trabalho de aprendizado de máquina

Você usará as seguintes etapas para realizar sua tarefa, bem como qualquer outra tarefa do ML.NET:

  1. Carregar os dados
  2. Criar e treinar o modelo
  3. Avaliar o modelo
  4. Usar o modelo

Pré-requisitos

Selecionar a tarefa de aprendizado de máquina apropriada

Há várias maneiras de abordar problemas de recomendação, como recomendar uma lista de filmes ou uma lista de produtos relacionados, mas, nesse caso, você preverá qual classificação (1 a 5) um usuário dará a um filme específico e recomendará esse filme se ele for superior a um limite definido (quanto maior a classificação, maior a probabilidade de um usuário gostar de um filme específico).

Criar um aplicativo de console

Criar um projeto

  1. Crie um Aplicativo de console C# chamado "MovieRecommender". Clique no botão Avançar.

  2. Escolha o .NET 6 como a estrutura a ser usada. Selecione o botão Criar.

  3. Crie um diretório chamado Data no projeto para armazenar o conjunto de dados:

    No Gerenciador de Soluções, clique com o botão direito do mouse no projeto e selecione Adicionar>Nova Pasta. Digite "Dados" e pressione Enter.

  4. Instale os pacotes NuGet Microsoft.ML e Microsoft.ML.Recommender:

    Observação

    Este exemplo usa a versão estável mais recente dos pacotes NuGet mencionados, salvo indicação em contrário.

    No Gerenciador de Soluções, clique com o botão direito no projeto e escolha Gerenciar Pacotes NuGet. Escolha "nuget.org" como a origem do pacote, selecione a guia Procurar, pesquise por Microsoft.ML, selecione o pacote na lista e selecione o botão Instalar. Selecione o botão OK na caixa de diálogo Visualizar Alterações e selecione o botão Aceito na caixa de diálogo Aceitação da Licença, se concordar com o termos de licença para os pacotes listados. Repita essas etapas para o Microsoft.ML.Recommender.

  5. Adicione as seguintes instruções using à parte superior do arquivo Program.cs:

    using Microsoft.ML;
    using Microsoft.ML.Trainers;
    using MovieRecommendation;
    

Baixar seus dados

  1. Baixe os dois conjuntos de dados e salve-os na pasta Data criada anteriormente:

    • Clique com o botão direito do mouse em recommendation-ratings-train.csv e selecione "Salvar Link (ou Destino) como..."

    • Clique com o botão direito do mouse em recommendation-ratings-test.csv e selecione "Salvar Link (ou Destino) como..."

      Salve os arquivos *.csv na pasta Data ou, depois de salvá-los em outro lugar, mova os arquivos *.csv para a pasta Data.

  2. No Gerenciador de Soluções, clique com o botão direito do mouse em cada um dos arquivos *.csv e selecione Propriedades. Em Avançado, altere o valor de Copiar para Diretório de Saída para Copiar se for mais novo.

    GIF de um usuário selecionando cópia se for mais nova no VS.

Carregar os dados

A primeira etapa no processo do ML.NET é preparar e carregar os dados de treinamento e teste de modelo.

Os dados de classificações de recomendação são divididos nos conjuntos de dados Train e Test. Os dados Train são usados para ajustar o modelo. Os dados Test são usados para fazer previsões com o modelo treinado e avaliar o desempenho do modelo. É comum ter uma divisão 80/20 com os dados Train e Test.

Segue abaixo uma visualização dos dados nos arquivos *.csv:

Captura de tela da versão prévia do conjunto de dados CVS.

Nos arquivos *.csv, há quatro colunas:

  • userId
  • movieId
  • rating
  • timestamp

No aprendizado de máquina, as colunas que são usadas para fazer uma previsão são chamadas Recursos e a coluna com a previsão retornada é chamada o Rótulo.

Você deseja prever as classificações de filmes, portanto, a coluna de classificação é o Label. As outras três colunas, userId, movieId e timestamp, são todos Features usados para prever o Label.

Recursos Rótulo
userId rating
movieId
timestamp

Cabe a você decidir quais Features são usados para prever o Label. Você também pode usar métodos como importância do recurso de permuta para ajudar a selecionar os melhores Features.

Nesse caso, você deve eliminar a coluna timestamp como um Feature porque o carimbo de data/hora não afeta como um usuário classifica determinado filme e, portanto, não contribui para uma previsão mais precisa:

Recursos Rótulo
userId rating
movieId

Em seguida, é necessário definir a estrutura de dados para a classe de entrada.

Adicione uma nova classe ao seu projeto:

  1. No Gerenciador de Soluções, clique com o botão direito do mouse no projeto e, em seguida, selecione Adicionar > Novo Item.

  2. Na caixa de diálogo Adicionar Novo Item, selecione Classe e altere o campo Nome para MovieRatingData.cs. Em seguida, selecione o botão Adicionar.

O arquivo MovieRatingData.cs será aberto no editor de códigos. Adicione a seguinte instrução using acima de MovieRatingData.cs:

using Microsoft.ML.Data;

Crie uma classe chamada MovieRating removendo a definição de classe existente e adicionando o seguinte código a MovieRatingData.cs:

public class MovieRating
{
    [LoadColumn(0)]
    public float userId;
    [LoadColumn(1)]
    public float movieId;
    [LoadColumn(2)]
    public float Label;
}

MovieRating especifica uma classe de dados de entrada. O atributo LoadColumn especifica quais colunas (por índice de coluna) no conjunto de dados devem ser carregadas. As colunas userId e movieId são os Features (as entradas que você fornecerá ao modelo para prever o Label), e a coluna de classificação é o Label, que você preverá (a saída do modelo).

Crie outra classe, MovieRatingPrediction, para representar os resultados previstos adicionando o seguinte código após a classe MovieRating em MovieRatingData.cs:

public class MovieRatingPrediction
{
    public float Label;
    public float Score;
}

Em Program.cs, substitua o Console.WriteLine("Hello World!") pelo seguinte código:

MLContext mlContext = new MLContext();

A classe MLContext é um ponto de partida para todas as operações do ML.NET e a inicialização do mlContext cria um ambiente do ML.NET que pode ser compartilhado entre os objetos de fluxo de trabalho da criação de modelo. Ele é semelhante, conceitualmente, a DBContext no Entity Framework.

Na parte inferior do arquivo, crie um método chamado LoadData():

(IDataView training, IDataView test) LoadData(MLContext mlContext)
{

}

Observação

Esse método apresentará um erro até que você adicione uma instrução de retorno nas etapas a seguir.

Inicialize as variáveis do caminho de dados, carregue os dados nos arquivos *.csv e retorne os dados Train e Test como objetos IDataView adicionando o seguinte como a próxima linha de código em LoadData():

var trainingDataPath = Path.Combine(Environment.CurrentDirectory, "Data", "recommendation-ratings-train.csv");
var testDataPath = Path.Combine(Environment.CurrentDirectory, "Data", "recommendation-ratings-test.csv");

IDataView trainingDataView = mlContext.Data.LoadFromTextFile<MovieRating>(trainingDataPath, hasHeader: true, separatorChar: ',');
IDataView testDataView = mlContext.Data.LoadFromTextFile<MovieRating>(testDataPath, hasHeader: true, separatorChar: ',');

return (trainingDataView, testDataView);

Os dados do ML.NET são representados como uma interface IDataView. IDataView é uma maneira flexível e eficiente de descrever dados tabulares (numéricos e texto). Os dados podem ser carregados de um arquivo de texto ou em tempo real (por exemplo, banco de dados SQL ou arquivos de log) para um objeto IDataView.

O LoadFromTextFile() define o esquema de dados e lê o arquivo. Ele usa as variáveis de caminho de dados e retorna uma IDataView. Nesse caso, você fornece o caminho para os arquivos Test e Train e indica o cabeçalho do arquivo de texto (para que ele possa usar os nomes de coluna corretamente) e o separador de dados de caractere de vírgula (o separador padrão é uma guia).

Adicione o seguinte código para chamar o método LoadData() e retornar os dados Train e Test:

(IDataView trainingDataView, IDataView testDataView) = LoadData(mlContext);

Criar e treinar o modelo

Crie o método BuildAndTrainModel(), logo após o método LoadData(), usando o seguinte código:

ITransformer BuildAndTrainModel(MLContext mlContext, IDataView trainingDataView)
{

}

Observação

Esse método apresentará um erro até que você adicione uma instrução de retorno nas etapas a seguir.

Defina as transformações de dados adicionando o seguinte código a BuildAndTrainModel():

IEstimator<ITransformer> estimator = mlContext.Transforms.Conversion.MapValueToKey(outputColumnName: "userIdEncoded", inputColumnName: "userId")
    .Append(mlContext.Transforms.Conversion.MapValueToKey(outputColumnName: "movieIdEncoded", inputColumnName: "movieId"));

Como userId e movieId representam usuários e títulos de filmes, não valores reais, use o método MapValueToKey() para transformar cada userId e cada movieId em uma coluna Feature de tipo de chave numérica (um formato aceito pelos algoritmos de recomendação) e adicioná-los como novas colunas de conjunto de dados:

userId movieId Rótulo userIdEncoded movieIdEncoded
1 1 4 userKey1 movieKey1
1 3 4 userKey1 movieKey2
1 6 4 userKey1 movieKey3

Escolha o algoritmo de aprendizado de máquina e acrescente-o às definições de transformação de dados adicionando o seguinte como a próxima linha de código em BuildAndTrainModel():

var options = new MatrixFactorizationTrainer.Options
{
    MatrixColumnIndexColumnName = "userIdEncoded",
    MatrixRowIndexColumnName = "movieIdEncoded",
    LabelColumnName = "Label",
    NumberOfIterations = 20,
    ApproximationRank = 100
};

var trainerEstimator = estimator.Append(mlContext.Recommendation().Trainers.MatrixFactorization(options));

O MatrixFactorizationTrainer é o algoritmo de treinamento de recomendação. A Fatoração de Matriz é uma abordagem comum de recomendação quando você tem dados sobre como os usuários classificaram produtos no passado, que é o caso para os conjuntos de dados deste tutorial. Há outros algoritmos de recomendação para quando você tem diferentes dados disponíveis (confira a seção Outros algoritmos de recomendação abaixo para saber mais).

Nesse caso, o algoritmo Matrix Factorization usa um método chamado "filtragem colaborativa", que supõe que, se o Usuário 1 tem a mesma opinião do Usuário 2 sobre determinada questão, é mais provável que o Usuário 1 sinta-se da mesma forma que o Usuário 2 sobre outra questão.

Por exemplo, se o Usuário 1 e o Usuário 2 classificam filmes de forma semelhante, é mais provável que o Usuário 2 goste de um filme que o Usuário 1 assistiu e forneceu uma classificação alta:

Incredibles 2 (2018) The Avengers (2012) Guardians of the Galaxy (2014)
Usuário 1 Assistiu e gostou do filme Assistiu e gostou do filme Assistiu e gostou do filme
Usuário 2 Assistiu e gostou do filme Assistiu e gostou do filme Não assistiu – RECOMENDAR o filme

O treinador Matrix Factorization tem várias Opções, sobre as quais você pode ler mais na seção Hiperparâmetros de algoritmo abaixo.

Ajuste o modelo aos dados Train e retorne o modelo treinado adicionando o seguinte como a próxima linha de código no método BuildAndTrainModel():

Console.WriteLine("=============== Training the model ===============");
ITransformer model = trainerEstimator.Fit(trainingDataView);

return model;

O método Fit() treina o modelo com o conjunto de dados de treinamento fornecido. Tecnicamente, ele executa as definições Estimator transformando os dados e aplicando o treinamento e retorna o modelo treinado, que é um Transformer.

Para obter mais informações sobre o fluxo de trabalho de treinamento de modelo no ML.NET, consulte O que é ML.NET e como funciona?

Adicione o seguinte como a próxima linha de código abaixo da chamada ao método LoadData() para chamar o método BuildAndTrainModel() e retornar o modelo treinado:

ITransformer model = BuildAndTrainModel(mlContext, trainingDataView);

Avaliar o modelo

Depois de treinar o modelo, use os dados de teste para avaliar o desempenho do modelo.

Crie o método EvaluateModel(), logo após o método BuildAndTrainModel(), usando o seguinte código:

void EvaluateModel(MLContext mlContext, IDataView testDataView, ITransformer model)
{

}

Transforme os dados Test adicionando o seguinte código a EvaluateModel():

Console.WriteLine("=============== Evaluating the model ===============");
var prediction = model.Transform(testDataView);

O método Transform() faz previsões para várias linhas de entrada fornecidas de um conjunto de dados de teste.

Avalie o modelo adicionando o seguinte como a próxima linha de código no método EvaluateModel():

var metrics = mlContext.Regression.Evaluate(prediction, labelColumnName: "Label", scoreColumnName: "Score");

Depois que você define a previsão, o método Evaluate() avalia o modelo, que compara os valores previstos com os Labels reais no conjunto de dados de teste e retorna métricas sobre o desempenho do modelo.

Imprima as métricas de avaliação no console adicionando o seguinte como a próxima linha de código no método EvaluateModel():

Console.WriteLine("Root Mean Squared Error : " + metrics.RootMeanSquaredError.ToString());
Console.WriteLine("RSquared: " + metrics.RSquared.ToString());

Adicione o seguinte como a próxima linha de código abaixo da chamada ao método BuildAndTrainModel() para chamar o método EvaluateModel():

EvaluateModel(mlContext, testDataView, model);

Até agora, a saída deve ser semelhante ao seguinte texto:

=============== Training the model ===============
iter      tr_rmse          obj
   0       1.5403   3.1262e+05
   1       0.9221   1.6030e+05
   2       0.8687   1.5046e+05
   3       0.8416   1.4584e+05
   4       0.8142   1.4209e+05
   5       0.7849   1.3907e+05
   6       0.7544   1.3594e+05
   7       0.7266   1.3361e+05
   8       0.6987   1.3110e+05
   9       0.6751   1.2948e+05
  10       0.6530   1.2766e+05
  11       0.6350   1.2644e+05
  12       0.6197   1.2541e+05
  13       0.6067   1.2470e+05
  14       0.5953   1.2382e+05
  15       0.5871   1.2342e+05
  16       0.5781   1.2279e+05
  17       0.5713   1.2240e+05
  18       0.5660   1.2230e+05
  19       0.5592   1.2179e+05
=============== Evaluating the model ===============
Rms: 0.994051469730769
RSquared: 0.412556298844873

Nessa saída, há 20 iterações. Em cada iteração, a medida de erro diminui e é convergida para mais próximo de 0.

A root of mean squared error (RMS ou RMSE) é usada para medir as diferenças entre os valores previstos do modelo e os valores observados do conjunto de dados de teste. Tecnicamente, ela é a raiz quadrada da média dos quadrados dos erros. Quanto menor, melhor o modelo.

R Squared indica o quanto os dados se ajustam a um modelo. Varia de 0 a 1. Um valor de 0 significa que os dados são aleatórios ou não podem ser ajustados ao modelo. Um valor de 1 significa que o modelo corresponde exatamente aos dados. Você deseja que a pontuação R Squared esteja o mais próximo possível de 1.

A criação de modelos bem-sucedidos é um processo iterativo. Esse modelo tem qualidade inicial inferior, pois o tutorial usa conjuntos de dados pequenos para fornecer um treinamento rápido do modelo. Se você não estiver satisfeito com a qualidade do modelo, tente melhorá-lo fornecendo conjuntos de dados de treinamento maiores ou escolhendo diferentes algoritmos de treinamento com diferentes hiperparâmetros para cada algoritmo. Para obter mais informações, confira a seção Melhorar o modelo abaixo.

Usar o modelo

Agora você pode usar o modelo treinado para fazer previsões sobre novos dados.

Crie o método UseModelForSinglePrediction(), logo após o método EvaluateModel(), usando o seguinte código:

void UseModelForSinglePrediction(MLContext mlContext, ITransformer model)
{

}

Use o PredictionEngine para prever a classificação adicionando o seguinte código à UseModelForSinglePrediction():

Console.WriteLine("=============== Making a prediction ===============");
var predictionEngine = mlContext.Model.CreatePredictionEngine<MovieRating, MovieRatingPrediction>(model);

O PredictionEngine é uma API de conveniência, que permite executar uma previsão em uma instância individual de dados. PredictionEngine não é thread-safe. É aceitável usá-lo em ambientes de thread único ou de protótipo. Para aprimorar o desempenho e o acesso thread-safe em ambientes de produção, use o serviço PredictionEnginePool, que cria um ObjectPool de objetos PredictionEngine para uso em todo o aplicativo. Confira este guia sobre como usar o PredictionEnginePool em uma API Web ASP.NET Core.

Observação

A extensão de serviço PredictionEnginePool está atualmente em versão prévia.

Crie uma instância de MovieRating chamada testInput e passe-a para o Mecanismo de Previsão adicionando o seguinte como as próximas linhas do código no método UseModelForSinglePrediction():

var testInput = new MovieRating { userId = 6, movieId = 10 };

var movieRatingPrediction = predictionEngine.Predict(testInput);

A função Predict() faz uma previsão sobre uma única coluna de dados.

Em seguida, use a Score, ou a classificação prevista, para determinar se deseja recomendar o filme com a movieId 10 para o usuário 6. Quanto mais alta a Score, maior a probabilidade de um usuário gostar de um filme específico. Nesse caso, digamos que você recomende filmes com uma classificação prevista de > 3,5.

Para imprimir os resultados, adicione o seguinte como as próximas linhas de código no método UseModelForSinglePrediction():

if (Math.Round(movieRatingPrediction.Score, 1) > 3.5)
{
    Console.WriteLine("Movie " + testInput.movieId + " is recommended for user " + testInput.userId);
}
else
{
    Console.WriteLine("Movie " + testInput.movieId + " is not recommended for user " + testInput.userId);
}

Adicione o seguinte como a próxima linha de código após a chamada ao método EvaluateModel() para chamar o método UseModelForSinglePrediction():

UseModelForSinglePrediction(mlContext, model);

A saída desse método deve ser semelhante ao seguinte texto:

=============== Making a prediction ===============
Movie 10 is recommended for user 6

Salve seu modelo

Para usar o modelo para fazer previsões em aplicativos de usuário final, primeiro é necessário salvar o modelo.

Crie o método SaveModel(), logo após o método UseModelForSinglePrediction(), usando o seguinte código:

void SaveModel(MLContext mlContext, DataViewSchema trainingDataViewSchema, ITransformer model)
{

}

Salve o modelo treinado adicionando o seguinte código ao método SaveModel():

var modelPath = Path.Combine(Environment.CurrentDirectory, "Data", "MovieRecommenderModel.zip");

Console.WriteLine("=============== Saving the model to a file ===============");
mlContext.Model.Save(model, trainingDataViewSchema, modelPath);

Esse método salva o modelo treinado em um arquivo .zip (na pasta "Data"), que pode ser usado em outros aplicativos .NET para fazer previsões.

Adicione o seguinte como a próxima linha de código após a chamada ao método UseModelForSinglePrediction() para chamar o método SaveModel():

SaveModel(mlContext, trainingDataView.Schema, model);

Usar o modelo salvo

Após salvar seu modelo treinado, você poderá consumir o modelo em diferentes ambientes. Consulte Salvar e carregar modelos treinados para saber como operacionalizar um modelo de machine learning treinado em aplicativos.

Resultados

Depois de seguir as etapas acima, execute o aplicativo de console (Ctrl + F5). Os resultados da previsão individual acima deverão ser semelhantes ao mostrado a seguir. Você poderá ver avisos ou mensagens de processamento, mas essas mensagens foram removidas dos resultados a seguir para maior clareza.

=============== Training the model ===============
iter      tr_rmse          obj
   0       1.5382   3.1213e+05
   1       0.9223   1.6051e+05
   2       0.8691   1.5050e+05
   3       0.8413   1.4576e+05
   4       0.8145   1.4208e+05
   5       0.7848   1.3895e+05
   6       0.7552   1.3613e+05
   7       0.7259   1.3357e+05
   8       0.6987   1.3121e+05
   9       0.6747   1.2949e+05
  10       0.6533   1.2766e+05
  11       0.6353   1.2636e+05
  12       0.6209   1.2561e+05
  13       0.6072   1.2462e+05
  14       0.5965   1.2394e+05
  15       0.5868   1.2352e+05
  16       0.5782   1.2279e+05
  17       0.5713   1.2227e+05
  18       0.5637   1.2190e+05
  19       0.5604   1.2178e+05
=============== Evaluating the model ===============
Rms: 0.977175077487166
RSquared: 0.43233349213192
=============== Making a prediction ===============
Movie 10 is recommended for user 6
=============== Saving the model to a file ===============

Parabéns! Você agora criou um modelo de machine learning para recomendação de filmes. Você pode encontrar o código-fonte para este tutorial no repositório dotnet/samples.

Melhorar o modelo

Há várias maneiras de melhorar o desempenho do modelo para obter previsões mais precisas.

Dados

A adição de mais dados de treinamento que tenham amostras suficientes para cada usuário e a ID de filme pode ajudar a melhorar a qualidade do modelo de recomendação.

A validação cruzada é uma técnica para avaliação de modelos que divide dados aleatoriamente em subconjuntos (em vez de extrair os dados de teste do conjunto de dados como você fez neste tutorial) e usa alguns dos grupos como dados de treinamento e alguns dos grupos como dados de teste. Esse método tem um melhor desempenho do que a divisão treinamento/teste em termos de qualidade do modelo.

Recursos

Neste tutorial, você só usará os três Features (user id, movie id e rating) fornecidos pelo conjunto de dados.

Embora esse seja um bom começo, na verdade, o ideal será adicionar outros atributos ou Features (por exemplo, idade, sexo, localização geográfica etc.) se eles forem incluídos no conjunto de dados. A adição de Features mais relevantes pode ajudar a melhorar o desempenho do modelo de recomendação.

Caso não tenha certeza sobre quais Features podem ser mais relevantes para sua tarefa de aprendizado de máquina, use também o FCC (Cálculo de Contribuição do Recurso) e a importância do recurso de permuta, fornecidos pelo ML.NET para descobrir Features mais influentes.

Hiperparâmetros de algoritmo

Embora o ML.NET forneça bons algoritmos de treinamento padrão, você pode ajustar ainda mais o desempenho alterando os hiperparâmetros do algoritmo.

Para a Matrix Factorization, você pode experimentar com hiperparâmetros, como NumberOfIterations e ApproximationRank para ver se ele oferece melhores resultados.

Por exemplo, neste tutorial, as opções de algoritmo são:

var options = new MatrixFactorizationTrainer.Options
{
    MatrixColumnIndexColumnName = "userIdEncoded",
    MatrixRowIndexColumnName = "movieIdEncoded",
    LabelColumnName = "Label",
    NumberOfIterations = 20,
    ApproximationRank = 100
};

Outros algoritmos de recomendação

O algoritmo de fatoração de matriz com a filtragem colaborativa é apenas uma abordagem para fazer recomendações de filmes. Em muitos casos, talvez você não tenha os dados de classificações disponíveis e tenha apenas o histórico de filmes disponível dos usuários. Em outros casos, você pode ter mais do que apenas os dados de classificação do usuário.

Algoritmo Cenário Amostra
Fatoração de Matriz de uma Classe Use isso quando você tiver apenas userId e movieId. Esse estilo de recomendação é baseado no cenário de cocompra, ou produtos frequentemente comprados juntos, o que significa que ele recomendará aos clientes um conjunto de produtos de acordo com seu próprio histórico de ordens de compra. >Experimente
Computadores de Fatoração com Reconhecimento de Campo Use isso para fazer recomendações quando você tiver mais Recursos do que userId, productId e a classificação (como descrição ou preço do produto). Esse método também usa uma abordagem de filtragem colaborativa. >Experimente

Novo cenário de usuário

Um problema comum na filtragem colaborativa é o problema de inicialização a frio, que é quando você tem um novo usuário sem nenhum dado anterior do qual fazer inferências. Esse problema costuma ser resolvido com a solicitação da criação de um perfil aos novos usuários e, por exemplo, da classificação de filmes que assistiram no passado. Embora esse método seja um fardo para o usuário, ele fornece alguns dados iniciais para novos usuários sem nenhum histórico de classificação.

Recursos

Os dados usados neste tutorial foram obtidos do Conjunto de dados MovieLens.

Próximas etapas

Neste tutorial, você aprendeu a:

  • Selecionar um algoritmo de aprendizado de máquina
  • Preparar e carregar os dados
  • Criar e treinar um modelo
  • Avaliar um modelo
  • Implantar e consumir um modelo

Avançar para o próximo tutorial para saber mais