Aprendizaje automático en C# (.NET): revisión de bibliotecas clave
Aunque Python se considera tradicionalmente el lenguaje principal para el aprendizaje automático (ML), el ecosistema de C# (.NET) ofrece soluciones potentes y maduras para integrar modelos de ML en aplicaciones empresariales, servicios web y programas de escritorio. En este artículo, revisaremos las principales bibliotecas disponibles para desarrolladores de C#, sus capacidades, ejemplos de uso y escenarios de aplicación.
1. ML.NET — biblioteca oficial de Microsoft
ML.NET es una biblioteca de aprendizaje automático multiplataforma, abierta y gratuita desarrollada por Microsoft. Permite crear, entrenar y usar modelos de ML directamente en aplicaciones .NET, sin necesidad de cambiar a Python u otros lenguajes.
Capacidades principales:
- Soporte para algoritmos clásicos: regresión, clasificación, agrupamiento, ranking.
- Aprendizaje profundo mediante integración con TensorFlow y ONNX.
- Aprendizaje automático automático (AutoML) para seleccionar el modelo óptimo.
- Tuberías integradas de procesamiento de datos (transformaciones, normalización).
- Integración con Visual Studio (extensión Model Builder).
Ejemplo: clasificación binaria (determinación de sentimiento 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();// Carga de datosIDataView data = context.Data.LoadFromTextFile<SentimentData>("data.tsv", separatorChar: '\\t');// Tubería: transformación de texto + entrenamientovar pipeline = context.Transforms.Text.FeaturizeText("Features", nameof(SentimentData.SentimentText)) .Append(context.BinaryClassification.Trainers.SdcaLogisticRegression());// Entrenamientovar 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 computación científica
Accord.NET es una potente biblioteca que proporciona no solo algoritmos de ML, sino también herramientas para procesamiento de señales, estadística, visión por computadora y redes neuronales. Se considera una de las soluciones más completas para .NET.
Capacidades principales:
- Amplia selección de algoritmos: SVM, Random Forest, K-Means, Naive Bayes.
- Redes neuronales profundas (Accord.Neuro).
- Procesamiento de imágenes y video (Accord.Imaging).
- Pruebas estadísticas y distribuciones.
Ejemplo: entrenamiento de un clasificador SVM
using Accord.MachineLearning.VectorMachines;using Accord.MachineLearning.VectorMachines.Learning;using Accord.Statistics.Kernels;
// Datos de entrenamiento (características: dos 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 };
// Creación y entrenamiento de SVM con kernel Gaussianovar teacher = new SequentialMinimalOptimization<Gaussian>(){ Complexity = 100};var svm = teacher.Learn(inputs, outputs);
// Predicciónint prediction = svm.Decide(new double[] { 0.8, 0.2 });Console.WriteLine($"Predicted class: {prediction}");3. TensorFlow.NET — enlaces .NET para TensorFlow
TensorFlow.NET (SciSharp) son los enlaces oficiales de bajo nivel para TensorFlow en .NET. La biblioteca permite realizar operaciones con tensores, construir y entrenar redes neuronales, así como cargar