O que é ML.NET?
O ML.NET é um framework multiplataforma de aprendizado de máquina de código aberto e gratuito, criado pela Microsoft para a plataforma de desenvolvedores do .NET.
ML.NET
O ML.NET é uma estrutura de aprendizado de máquina gratuita, de código aberto e multiplataforma para a plataforma de desenvolvedor .NET.
O ML.NET permite treinar, construir e enviar modelos de machine learning personalizados usando C# ou F# em vários cenários de ML. O ML.NET inclui recursos como o machine learning automatizado (AutoML) e as ferramentas como a CLI do ML.NET e o ML.NET Model Builder, o que tornará a integração do machine learning aos seus aplicativos ainda mais fácil.
ML.NET passo a passo
ML.NET seguir as mesmas etapas básicas para quase todos os cenários; ele combina o carregamento de dados, transformações e treinamento de modelo para facilitar a criação de modelos de aprendizado de máquina.
Crie um contexto ML.NET
MLContext é o ponto de partida para todas as operações de ML.NET. O MLContext
é usado para todos os aspectos de criação e consumo de um modelo de ML.NET. Ele é semelhante conceitualmente ao DbContext
no Entity Framework.
var mlContext = new MLContext();
Uma vez que você tenha uma instância de um MLContext
, você pode carregar e transformar dados, escolher o melhor algoritmo para sua tarefa de aprendizado de máquina, treinar seu modelo. Depois de treinado, você pode testar a precisão de seu modelo, salvá-lo no disco e usá-lo para fazer previsões. Um MLContext
pode ser inicializado a partir de um modelo que foi salvo anteriormente no disco.
Carregar dados
O machine learning usa dados conhecidos (por exemplo, dados de treinamento) para localizar padrões a fim de fazer previsões em dados novos e desconhecidos.
As entradas para machine learning são chamadas Recursos, que são os atributos usados para fazer previsões. O resultado do machine learning é chamada de Rótulo, que é a previsão real.
Os dados no ML.NET são representados como uma IDataView, que é uma maneira flexível e eficiente de descrever dados tabulados (por exemplo, linhas e colunas). Os objetos IDataView podem conter números, texto, boolianos, vetores e muito mais. Você pode carregar para um IDataView dados de arquivos ou de fontes de streaming em tempo real.
LoadFromTextFile
permite carregar dados de TXT, CSV, TSV e outros formatos de arquivo.
IDataView trainingData = mlContext.Data
.LoadFromTextFile<SentimentInput>(dataPath, separatorChar: ',', hasHeader: true);
LoadFromEnumerable
permite o carregamento de coleções na memória, JSON/XML, bancos de dados relacionais e não relacionais (por exemplo, SQL, CosmosDB, MongoDB) e muitas outras fontes de dados.
IDataView trainingData = mlContext.Data
.LoadFromEnumerable<SentimentInput>(inMemoryCollection);
Transformar dados
Na maioria dos casos, os dados disponíveis não são adequados para serem usados diretamente para treinar um modelo de machine learning. Os dados brutos precisam ser pré-processados usando transformações de dados.
Transformadores obtêm dados, trabalham neles e retornam dados novos e transformados.
Há um conjunto interno de transformações de dados para substituir valores ausentes, conversão de dados, definição de texto e muito mais.
// Convert sentiment text into numeric features
IEstimator<ITransformer> dataTransformPipeline = mlContext.Transforms.Text
.FeaturizeText("Features", "SentimentText");
Escolher algoritmo
Ao usar o aprendizado de máquina e o ML.NET, você deve escolher uma tarefa de aprendizado de máquina que acompanhe o seu cenário. ML.NET oferece mais de 30 algoritmos (ou treinadores) para uma variedade de tarefas de ML:
Tarefa ML | Algoritmos |
---|---|
Classificação binária (por exemplo, análise de sentimento) | AveragedPerceptronTrainer, SdcaLogisticRegressionBinaryTrainer |
Classificação multiclasse (por exemplo, categorização de tópicos) | LightGbmMulticlassTrainer, OneVersusAllTrainer |
Regressão (por exemplo, previsão de preço) | LbfgsPoissonRegressionTrainer, FastTreeRegressionTrainer |
Clustering (por exemplo, segmentação de clientes) | KMeansTrainer |
Detecção de Anomalias (por exemplo, detecção de picos de vendas de spam) | RandomizedPcaTrainer |
Recomendação (por exemplo, recomendação de filme) | MatrixFactorizationTrainer |
Classificação (por exemplo, resultados de pesquisa) | LightGbmRankingTrainer, FastTreeRankingTrainer |
IEstimator<ITransformer> trainer = mlContext.BinaryClassification.Trainers
.AveragedPerceptron(labelColumnName: "Sentiment", featureColumnName: "Features"));
IEstimator<ITransformer> trainingPipeline = dataTransformPipeline.Append(trainer);
Treinar o modelo
As transformações de dados e algoritmos que você especificou não são executados até que você chame o método Fit()
(devido à abordagem de carregamento lento do ML.NET). É nesse ponto que o treinamento de modelo acontece.
Um avaliador usa dados, aprende com os dados e cria um transformador. No caso do treinamento de modelo, os dados de treinamento são a entrada e o modelo treinado é a saída; o modelo treinado é, portanto, um transformador que transforma os recursos de entrada de novos dados em previsões de saída.
ITransformer model = pipeline.Fit(trainingData);
Avaliar modelo
O ML.NET oferece avaliadores que avaliam o desempenho do seu modelo em uma variedade de métricas:
- Precisão
- Área sob a curva (AUC)
- R-Quadrado
- Raiz do erro quadrático médio (RMSE)
// Make predictions on test data
IDataView predictions = model.Transform(testDataView);
// Evaluate model and return metrics
var metrics = mlContext.BinaryClassification
.Evaluate(predictions, labelColumnName: "Sentiment");
// Print out accuracy metric
Console.WriteLine("Accuracy" + metrics.Accuracy);
Implantar & consumir modelo
Você pode salvar seu modelo treinado como um arquivo binário que, em seguida, é integrado aos seus aplicativos .NET.
mlContext.Model.Save(model, trainingData, "model.zip");
Depois de salvar o modelo treinado, você poderá carregar o modelo em seus outros aplicativos .NET.
MLContext mlContext = new MLContext();
DataViewSchema predictionPipelineSchema;
ITransformer trainedModel = mlContext.Model.Load("model.zip", out predictionPipelineSchema);
Você pode então usar o modelo carregado para começar a fazer previsões. Você pode usar o Mecanismo de Previsão, que é uma API de conveniência usada para fazer previsões únicas, ou o método Transformar, que é usado para fazer previsões em lotes.
var predEngine = mlContext.Model.CreatePredictionEngine(model);
SentimentInput sampleComment = new SentimentInput{ SentimentText = "This is very rude!" };
SentimentOutput result = predEngine.Predict(sampleComment);
Console.WriteLine(result.Prediction);
ML.NET FAQ
Para que o ML.NET é usado?
ML.NET é uma estrutura de aprendizado de máquina para desenvolvedores do .NET; você pode usar o ML.NET para integrar modelos de aprendizado de máquina personalizados em seus aplicativos .NET. Você pode usar ML.NET para muitos cenários, como análise de sentimento, previsão de preço, recomendação de produto, previsão de vendas, classificação de imagens, detecção de objetos e muito mais! Confira nosso repositório de exemplos do GitHub para obter mais exemplos do que você pode fazer com o ML.NET.
Qual é a diferença entre IA e aprendizado de máquina?
A IA é um ramo da computação que envolve treinamento de computadores para fazer coisas que normalmente exigem inteligência humana. O aprendizado de máquina é um subconjunto da IA que envolve computadores aprendendo e encontrando padrões em dados para que possam fazer previsões sobre novos dados por conta própria.
Por que preciso de ML.NET e como ML.NET diferente das outras ofertas de IA/ML da Microsoft?
A Microsoft oferece muitos produtos e serviços de IA e ML, portanto, aqui está um detalhamento das diferenças entre eles:
- ML.NET: crie soluções de machine learning personalizadas e integre-as aos seus aplicativos do .NET.
- Serviços Cognitivos do Azure: Serviços de nuvem que fornecem modelos predefinidos de IA e aprendizado de máquina para adicionar aos seus aplicativos. Inclui um conjunto de APIs para usar uma variedade de modelos para métodos de comunicação natural com visão e fala.
- Azure Machine Learning: ambiente abrangente na nuvem para hospedar seu ciclo de vida do modelo ML de ponta a ponta, incluindo treinamento de modelos, controle de versão, implantação e gerenciamento de versão em escala de nuvem.
Para quais tipos de aplicativos posso implantar modelos do ML.NET?
Você pode usar o ML.NET com quase todos os aplicativos .NET, incluindo aplicativos Web e serviços, Microsservices/Contêineres, aplicativos de área de trabalho (WPF e WinForms), Azure Functions e qualquer tipo de aplicativo do servidor Azure e aplicativos de console.
Quais estruturas posso usar com o ML.NET?
O ML.NET tem suporte no .NET, no .NET Core (versão 2.0 e superior) e no .NET Framework (versão 4.6.1 e posterior).
Quais arquiteturas de processo têm suporte ML.NET?
ML.NET atualmente tem suporte em processos x64 e x86.
Qual sistema operacional posso usar com o ML.NET?
ML.NET é multiplataforma, portanto, é compatível com Windows, Linux e macOS.
O ML.NET é gratuito?
Sim! Assim como o resto da plataforma .NET, o ML.NET é 100% gratuito. Para obter mais informações, consulte o site .NET gratuito. O ML.NET é licenciado ao abrigo da Licença MIT.
Qual é a melhor linguagem de programação para ML.NET?
O ML.NET é atualmente suportado tanto para C# como para F#.
Como posso aprender ML.NET?
Comece a usar o ML.NET com este tutorial, ou confira documentos ML.NET para saber mais.
Como faço para instalar o ML.NET?
Você pode adicionar ML.NET a qualquer projeto .NET adicionando o pacote NuGet do Microsoft.ML ou pode começar com ML.NET Model Builder (Windows) ou com a CLI do ML.NET (Windows, macOS e Linux).
Pronto para começar?
Nosso tutorial passo-a-passo irá ajudá-lo a usar o ML.NET em seu computador.