Aprendizaje automático en C# (.NET): revisión de las bibliotecas ML.NET, Accord.NET, TensorFlow.NET

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

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.NET para 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

Recommendations