Aprendizaje automático en C# (.NET): revisión de las bibliotecas clave
Aunque Python se considera tradicionalmente el lenguaje principal para el aprendizaje automático, el ecosistema de C# (.NET) también ofrece herramientas potentes y maduras para construir modelos de ML. Si su infraestructura está construida sobre el stack de Microsoft, o prefiere la tipificación estática y el alto rendimiento, las bibliotecas para .NET le ayudarán a implementar inteligencia artificial sin cambiar de stack tecnológico. En este artículo, revisaremos las tres bibliotecas principales: ML.NET, Accord.NET y TensorFlow.NET, y proporcionaremos ejemplos prácticos de código.
1. ML.NET — la biblioteca oficial de Microsoft
ML.NET es una biblioteca de aprendizaje automático multiplataforma y de código abierto, creada específicamente para desarrolladores .NET. Permite integrar ML en aplicaciones sin necesidad de aprender Python o R. ML.NET admite clasificación, regresión, agrupamiento, ranking, detección de anomalías e incluso aprendizaje profundo a través de la integración con ONNX y TensorFlow.
Capacidades clave:
- Transformadores integrados para la preparación de datos (normalización, codificación, concatenación).
- Selección automática de modelos (AutoML) a través de
AutoML.NET. - Exportación del modelo al formato ONNX para su uso posterior en otras plataformas.
- Soporte para entrenamiento con grandes datos a través de
IDataView.
Ejemplo: clasificación binaria de reseñas (análisis de sentimiento)
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; }}
// Carga de datos y entrenamientovar 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);
// Predicciónvar predictionEngine = context.Model.CreatePredictionEngine<SentimentData, SentimentPrediction>(model);var prediction = predictionEngine.Predict(new SentimentData { Text = "This product is amazing!" });Console.WriteLine($"Positive: {prediction.PredictedLabel}, Confidence: {prediction.Probability:P}");Este código muestra cómo entrenar un modelo a partir de un archivo CSV y hacer una predicción en pocas líneas. ML.NET maneja automáticamente los tipos de datos y crea el pipeline.
2. Accord.NET — el framework clásico para computación científica
Accord.NET es un conjunto de bibliotecas para procesamiento de señales, estadística y aprendizaje automático. Incluye más de 40 algoritmos: desde SVM y redes neuronales hasta modelos ocultos de Markov. La biblioteca se ha utilizado activamente en el ámbito académico y la industria desde 2010. A diferencia de ML.NET, Accord.NET proporciona un control de más bajo nivel sobre los algoritmos.
Capacidades clave:
- Amplia selección de clasificadores:
KNN,NaiveBayes,RandomForest,SVM. - Métodos de preprocesamiento integrados: PCA, LDA, normalización.
- Soporte para redes neuronales (Deep Learning Toolkit).
- Integración con
Math.NETpara operaciones matemáticas complejas.
Ejemplo: clasificación del iris de Fisher usando KNN
using Accord.MachineLearning;using Accord.MachineLearning.VectorMachines;using Accord.Statistics.Analysis;
// Carga de datos (conjunto clásico 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 }, // ... resto También en la biblioteca
Parseo de HTML en C++: resumen de bibliotecas y ejemplos de código
Internacionalización (i18n) en Java: guía completa con ejemplos
Configuración de aplicaciones Java: resumen de bibliotecas y herramientas
Caché en Swift (iOS/macOS): Redis, NSCache y otras soluciones