Aprendizaje automático en C# (.NET): revisión de bibliotecas y herramientas

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 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

Recommendations