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.
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.
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 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.
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.
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);
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");
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);
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);
O ML.NET oferece avaliadores que avaliam o desempenho do seu modelo em uma variedade de métricas:
// 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);
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 é 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.
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.
A Microsoft oferece muitos produtos e serviços de IA e ML, portanto, aqui está um detalhamento das diferenças entre eles:
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.
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).
ML.NET atualmente tem suporte em processos x64 e x86.
ML.NET é multiplataforma, portanto, é compatível com Windows, Linux e macOS.
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.
O ML.NET é atualmente suportado tanto para C# como para F#.
Comece a usar o ML.NET com este tutorial, ou confira documentos ML.NET para saber mais.
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).
Nosso tutorial passo a passo ajudará você a executar ML.NET no computador.