C# para aprendizaje automático: posibilidades, limitaciones y ejemplos para principiantes

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

Introducción: ¿Por qué C# para el aprendizaje automático?

El mundo del aprendizaje automático (ML) se asocia tradicionalmente con Python. Sin embargo, el ecosistema de C# y la plataforma .NET ofrecen potentes alternativas, especialmente para desarrolladores que ya trabajan en este entorno. Si está familiarizado con C# y desea aplicar sus habilidades en ML, este artículo es para usted.

Revisaremos las bibliotecas clave, las fortalezas y debilidades de C# en el contexto del ML, y proporcionaremos ejemplos prácticos de código. Aprenderá cuándo C# puede ser la mejor opción y cuándo debería recurrir a Python.



Bibliotecas principales de C# para aprendizaje automático

El ecosistema .NET está evolucionando activamente hacia el ML. Aquí están las tres herramientas principales que todo principiante debería conocer.



1. ML.NET — biblioteca nativa de Microsoft

ML.NET es una biblioteca de aprendizaje automático multiplataforma, de código abierto y gratuita para .NET. Permite agregar ML a las aplicaciones sin necesidad de salir del ecosistema C#.

Características principales:

  • Clasificación (por ejemplo, detección de spam en correos)
  • Regresión (predicción de precios)
  • Agrupamiento (segmentación de clientes)
  • Clasificación y recomendaciones
  • Detección de anomalías
  • Trabajo con imágenes (aprendizaje por transferencia)

Ejemplo: un modelo simple de clasificación 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; }}

// Código de entrenamientovar context = new MLContext();var data = context.Data.LoadFromTextFile<SentimentData>("data.csv", separatorChar: ',');var pipeline = context.Transforms.Text.FeaturizeText("Features", "Text") .Append(context.BinaryClassification.Trainers.SdcaLogisticRegression());var model = pipeline.Fit(data);var predictionEngine = context.Model.CreatePredictionEngine<SentimentData, SentimentPrediction>(model);var prediction = predictionEngine.Predict(new SentimentData { Text = "¡C# para ML es excelente!" });Console.WriteLine($"Sentimiento: {(prediction.PredictedLabel ? "Positivo" : "Negativo")}");


2. TensorFlow.NET — puente hacia TensorFlow

TensorFlow.NET (TF.NET) proporciona enlaces al popular framework Google TensorFlow. Esto permite usar todas las capacidades de TensorFlow (redes neuronales, aprendizaje profundo) desde C#.

Ventajas:

  • Acceso a modelos preentrenados (por ejemplo, para reconocimiento de imágenes)
  • Posibilidad de ajuste fino (fine-tuning)
  • Alto rendimiento en GPU

Ejemplo: carga de un modelo preentrenado para clasificación de imágenes.

using Tensorflow;using static Tensorflow.Binding;

// Carga del modelo Inception (se asume que los archivos del modelo están en la carpeta)var graph = new Graph().as_default();graph.Import("inception_v3.pb");

var session = new Session(graph);var tensor = ImageUtil.CreateTensorFromImageFile("cat.jpg");var output = session.run(outputs: graph.OperationByName("output"), inputs: graph.OperationByName("input"), inputTensors: new[] { tensor });Console.WriteLine($"Clase predicha: {output[0].argmax()}");


3. Accord.NET y SciSharp Stack

Accord.NET es una biblioteca más antigua, pero aún útil, que proporciona una amplia gama de algoritmos (SVM, redes neuronales, estadística). SciSharp es una comunidad que porta bibliotecas populares de Python (NumPy, Pandas, Scikit-learn) a C#.

Para un desarrollador principiante, recomendamos comenzar con ML.NET, ya que es el más integrado en el ecosistema .NET y tiene una excelente

Blogs

Book Recommendations