Aprendizaje automático en C#: bibliotecas ML.NET y Accord.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 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.

Recommendations