Aprendizado de Máquina em C#: bibliotecas ML.NET e Accord.NET

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Aprendizado de Máquina em C# (.NET): visão geral de bibliotecas para desenvolvedores



Embora o Python continue sendo o rei do aprendizado de máquina, o ecossistema .NET oferece ferramentas maduras e poderosas para integrar modelos de ML em aplicações corporativas, serviços web e soluções desktop. Neste artigo, analisaremos três bibliotecas principais para C#: ML.NET, Accord.NET e TensorFlow.NET. Você aprenderá qual escolher para sua tarefa e verá exemplos de código.



1. ML.NET — biblioteca nativa da Microsoft



ML.NET é uma biblioteca multiplataforma de código aberto, desenvolvida especificamente para .NET. Ela permite criar, treinar e implantar modelos de aprendizado de máquina sem precisar migrar para Python. Suporta classificação, regressão, clusterização, ranqueamento, detecção de anomalias e até sistemas de recomendação.



Principais recursos:

  • Transformadores de dados integrados (normalização, codificação one-hot, extração de características de texto e imagens).
  • AutoML — seleção automática de algoritmo e hiperparâmetros.
  • Exportação de modelos para ONNX para uso multiplataforma.
  • Suporte a GPU via TensorFlow e ONNX Runtime.


Exemplo: classificação binária de sentimento de texto

using Microsoft.ML;using Microsoft.ML.Data;

public class SentimentData{ public string Text { get; set; } public bool Label { get; set; }}

public class SentimentPrediction{ public bool PredictedLabel { get; set; } public float Probability { get; set; }}

var context = new MLContext();var data = context.Data.LoadFromTextFile<SentimentData>("data.csv", separatorChar: ',');

var pipeline = context.Transforms.Text.FeaturizeText("Features", nameof(SentimentData.Text)) .Append(context.BinaryClassification.Trainers.SdcaLogisticRegression());

var model = pipeline.Fit(data);var engine = context.Model.CreatePredictionEngine<SentimentData, SentimentPrediction>(model);

var prediction = engine.Predict(new SentimentData { Text = "This product is amazing!" });Console.WriteLine($"Prediction: {prediction.PredictedLabel}, Probability: {prediction.Probability}");


Quando usar: se sua aplicação já está em .NET e você precisa de integração perfeita de ML sem dependências externas.



2. Accord.NET — biblioteca clássica para cálculos científicos



Accord.NET é um conjunto de frameworks para processamento de sinais, estatística e aprendizado de máquina. Inclui mais de 50 algoritmos: desde regressão linear até redes neurais profundas. A biblioteca foi amplamente utilizada antes do surgimento do ML.NET e ainda é requisitada para tarefas que exigem ajuste fino.



Principais recursos:

  • Modelos flexíveis: SVM, Random Forest, K-Means, Hidden Markov Models.
  • Métodos integrados de processamento de imagem e áudio (filtros, detectores de bordas, FFT).
  • Suporte a métodos de kernel e modelos probabilísticos.
  • Integração com Math.NET Numerics para operações matemáticas avançadas.


Exemplo: treinamento de SVM para classificação de íris

using Accord.MachineLearning.VectorMachines;using Accord.MachineLearning.VectorMachines.Learning;using Accord.Statistics.Kernels;

// Carregamento dos dados (conjunto clássico Iris)double[][] inputs = // ... matriz de características (4 colunas)int[] outputs = // ... rótulos das classes (0,1,2)

var teacher = new MulticlassSupportVectorLearning<Gaussian>(){ Learner = (param) => new SequentialMinimalOptimization<Gaussian>() { Complexity = 100, Tolerance = 1e-5 }};

var machine = teacher.Learn(inputs, outputs);int[] predicted = machine.Decide(inputs);

double error = new ZeroOneLoss(outputs).Loss(predicted);Console.WriteLine($"Erro: {error:P}");


Quando

Recommendations