Aprendizaje automático en C# (.NET): revisión de bibliotecas para desarrolladores
Aunque Python sigue siendo el rey del aprendizaje automático, el ecosistema .NET ofrece herramientas maduras y potentes para integrar modelos de ML en aplicaciones empresariales, servicios web y soluciones de escritorio. En este artículo analizaremos tres bibliotecas clave para C#: ML.NET, Accord.NET y TensorFlow.NET. Aprenderá cuál elegir para su tarea y verá ejemplos de código.
1. ML.NET — biblioteca nativa de Microsoft
ML.NET es una biblioteca multiplataforma de código abierto desarrollada específicamente para .NET. Permite crear, entrenar e implementar modelos de aprendizaje automático sin necesidad de cambiar a Python. Admite clasificación, regresión, agrupamiento, clasificación, detección de anomalías e incluso sistemas de recomendación.
Características clave:
- Transformadores de datos integrados (normalización, codificación one-hot, extracción de características de texto e imágenes).
- AutoML: selección automática de algoritmo e hiperparámetros.
- Exportación de modelos a ONNX para uso multiplataforma.
- Soporte para GPU a través de TensorFlow y ONNX Runtime.
Ejemplo: clasificación binaria de sentimiento 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}");Cuándo usarlo: si su aplicación ya está en .NET y necesita una integración perfecta de ML sin dependencias externas.
2. Accord.NET — biblioteca clásica para cálculos científicos
Accord.NET es un conjunto de frameworks para procesamiento de señales, estadística y aprendizaje automático. Incluye más de 50 algoritmos: desde regresión lineal hasta redes neuronales profundas. La biblioteca se usó activamente antes de la llegada de ML.NET y sigue siendo demandada para tareas que requieren un ajuste fino.
Características clave:
- Modelos flexibles: SVM, Random Forest, K-Means, Modelos Ocultos de Markov.
- Métodos integrados de procesamiento de imágenes y audio (filtros, detectores de bordes, FFT).
- Soporte para métodos kernel y modelos probabilísticos.
- Integración con Math.NET Numerics para operaciones matemáticas avanzadas.
Ejemplo: entrenamiento de SVM para clasificación de iris
using Accord.MachineLearning.VectorMachines;using Accord.MachineLearning.VectorMachines.Learning;using Accord.Statistics.Kernels;
// Carga de datos (conjunto clásico Iris)double[][] inputs = // ... matriz de características (4 columnas)int[] outputs = // ... etiquetas de clase (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($"Error: {error:P}");Cuándo usarlo: si necesita algoritmos clásicos con control detallado y procesamiento de señales/imágenes.
También en la biblioteca
Testcontainers .NET para C#: guía completa con ejemplos prácticos
Envío de correo electrónico en Kotlin: bibliotecas y ejemplos de código
Planificador de tareas en C# (.NET): Quartz.NET y System.Threading.Timer
Aprendizaje automático en PHP: revisión de bibliotecas para integración de ML