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 (ML), o ecossistema C# (.NET) oferece soluções poderosas e maduras para integrar modelos de ML em aplicações corporativas, serviços web e programas desktop. Neste artigo, analisaremos as principais bibliotecas disponíveis para desenvolvedores C#, seus recursos, exemplos de uso e cenários de aplicação.
1. ML.NET — Biblioteca oficial da Microsoft
ML.NET é uma biblioteca de aprendizado de máquina multiplataforma, de código aberto e gratuita, desenvolvida pela Microsoft. Ela permite criar, treinar e usar modelos de ML diretamente em aplicações .NET, sem a necessidade de mudar para Python ou outras linguagens.
Principais recursos:
- Suporte a algoritmos clássicos: regressão, classificação, clusterização, ranqueamento.
- Aprendizado profundo através da integração com TensorFlow e ONNX.
- Aprendizado de máquina automático (AutoML) para seleção do modelo ideal.
- Pipelines integrados de processamento de dados (transformações, normalização).
- Integração com Visual Studio (extensão Model Builder).
Exemplo: classificação binária (análise de sentimento de texto)
using Microsoft.ML;using Microsoft.ML.Data;
public class SentimentData{ public string SentimentText { get; set; } public bool Label { get; set; }}
public class SentimentPrediction{ public bool PredictedLabel { get; set; } public float Probability { get; set; }}
var context = new MLContext();// Carregamento de dadosIDataView data = context.Data.LoadFromTextFile<SentimentData>("data.tsv", separatorChar: '\\t');// Pipeline: transformação de texto + treinamentovar pipeline = context.Transforms.Text.FeaturizeText("Features", nameof(SentimentData.SentimentText)) .Append(context.BinaryClassification.Trainers.SdcaLogisticRegression());// Treinamentovar model = pipeline.Fit(data);// Usovar engine = context.Model.CreatePredictionEngine<SentimentData, SentimentPrediction>(model);var prediction = engine.Predict(new SentimentData { SentimentText = "This is great!" });Console.WriteLine($"Predicted: {prediction.PredictedLabel}, Probability: {prediction.Probability}");2. Accord.NET — Conjunto de ferramentas de computação científica
Accord.NET é uma biblioteca poderosa que oferece não apenas algoritmos de ML, mas também ferramentas para processamento de sinais, estatística, visão computacional e redes neurais. É considerada uma das soluções mais completas para .NET.
Principais recursos:
- Ampla variedade de algoritmos: SVM, Random Forest, K-Means, Naive Bayes.
- Redes neurais profundas (Accord.Neuro).
- Processamento de imagens e vídeos (Accord.Imaging).
- Testes estatísticos e distribuições.
Exemplo: treinamento de um classificador SVM
using Accord.MachineLearning.VectorMachines;using Accord.MachineLearning.VectorMachines.Learning;using Accord.Statistics.Kernels;
// Dados de treinamento (características: dois números)double[][] inputs = { new double[] { 0, 0 }, new double[] { 1, 1 }, new double[] { 1, 0 }, new double[] { 0, 1 }};int[] outputs = { 0, 1, 1, 0 };
// Criação e treinamento de SVM com kernel Gaussianovar teacher = new SequentialMinimalOptimization<Gaussian>(){ Complexity = 100};var svm = teacher.Learn(inputs, outputs);
// Prediçãoint prediction = svm.Decide(new double[] { 0.8, 0.2 });Console.WriteLine($"Predicted class: {prediction}");3. TensorFlow.NET — Bindings .NET para TensorFlow
TensorFlow.NET (SciSharp) são bindings oficiais de baixo nível para TensorFlow no .NET. A biblioteca permite realizar operações com tensores, construir e treinar redes neurais, além de carreg