Aprendizado de Máquina em C# (.NET): visão geral das principais bibliotecas
Embora o Python seja tradicionalmente considerado a linguagem principal para aprendizado de máquina, o ecossistema C# (.NET) também oferece ferramentas poderosas e maduras para construir modelos de ML. Se sua infraestrutura é baseada no stack da Microsoft, ou se você prefere tipagem estática e alta performance, as bibliotecas para .NET ajudam a implementar inteligência artificial sem mudar de stack tecnológico. Neste artigo, vamos explorar três bibliotecas principais: ML.NET, Accord.NET e TensorFlow.NET, além de fornecer exemplos práticos de código.
1. ML.NET — biblioteca oficial da Microsoft
ML.NET é uma biblioteca de aprendizado de máquina multiplataforma e de código aberto, criada especificamente para desenvolvedores .NET. Ela permite integrar ML em aplicações sem a necessidade de aprender Python ou R. O ML.NET suporta classificação, regressão, clusterização, ranqueamento, detecção de anomalias e até aprendizado profundo através da integração com ONNX e TensorFlow.
Principais recursos:
- Transformadores embutidos para preparação de dados (normalização, codificação, concatenação).
- Seleção automática de modelo (AutoML) via
AutoML.NET. - Exportação de modelo para o formato ONNX para uso em outras plataformas.
- Suporte para treinamento em grandes volumes de dados através de
IDataView.
Exemplo: classificação binária de avaliações (análise de sentimento)
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; }}
// Carregar dados e treinarvar 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);
// Previsãovar predictionEngine = context.Model.CreatePredictionEngine<SentimentData, SentimentPrediction>(model);var prediction = predictionEngine.Predict(new SentimentData { Text = "This product is amazing!" });Console.WriteLine($"Positivo: {prediction.PredictedLabel}, Confiança: {prediction.Probability:P}");Este código mostra como treinar um modelo a partir de um arquivo CSV e fazer uma previsão em poucas linhas. O ML.NET processa automaticamente os tipos de dados e cria um pipeline.
2. Accord.NET — framework clássico para computação científica
Accord.NET é um conjunto de bibliotecas para processamento de sinais, estatística e aprendizado de máquina. Ele inclui mais de 40 algoritmos: desde SVM e redes neurais até modelos ocultos de Markov. A biblioteca é amplamente utilizada no meio acadêmico e na indústria desde 2010. Diferente do ML.NET, o Accord.NET oferece um controle de mais baixo nível sobre os algoritmos.
Principais recursos:
- Ampla variedade de classificadores:
KNN,NaiveBayes,RandomForest,SVM. - Métodos de pré-processamento embutidos: PCA, LDA, normalização.
- Suporte a redes neurais (Deep Learning Toolkit).
- Integração com
Math.NETpara operações matemáticas complexas.
Exemplo: classificação das íris de Fisher usando KNN
using Accord.MachineLearning;using Accord.MachineLearning.VectorMachines;using Accord.Statistics.Analysis;
// Carregar dados (conjunto clássico Iris)double[][] inputs = new double[][]{ new double[] { 5.1, 3.5, 1.4, 0.2 }, new double[] { 4.9, 3.0, 1.4, 0.2 }, // ... restante Também na biblioteca
Guia completo do Laravel Passport para PHP: OAuth2 na prática
Geração de relatórios PDF em Rust: bibliotecas e exemplos práticos
Processamento de imagens em Go: redimensionamento e corte (resize, crop)
Envio de SMS em Java: Visão geral e exemplos de uso de bibliotecas API (Twilio, Nexmo)
FastEndpoints C# (.NET): guia completo com exemplos práticos