ML.NET es una biblioteca de código abierto desarrollada por Microsoft que permite a los desarrolladores .NET integrar capacidades de Machine Learning (ML) en sus aplicaciones.
ML.NET proporciona una plataforma robusta para crear, entrenar y desplegar modelos de aprendizaje automático sin necesidad de conocimientos profundos en ML, y se integra perfectamente con el ecosistema .NET.
Además, Microsoft proporciona el ML.NET Model Builder, una herramienta gráfica que nos permite .NET crear, entrenar y consumir modelos de aprendizaje automático directamente desde Visual Studio, sin necesidad de tener un conocimiento profundo en el campo del aprendizaje automático.
Model Builder utiliza un enfoque basado en escenarios, y nos guía paso a paso a través del proceso de creación de modelos para tareas comunes como la clasificación, regresión y detección de anomalías.
Algunas de las características de ML.NET son,
- Compatibilidad con Modelos Preentrenados: Utiliza modelos preentrenados de TensorFlow y ONNX, lo que permite aprovechar modelos existentes sin necesidad de entrenar desde cero.
- Interoperabilidad con Entornos de Datos: Soporta datos en formatos comunes como CSV, SQL, y otros, facilitando la integración con diversos sistemas.
- Facilidad de Uso: Proporciona una API intuitiva y fácil de usar para desarrolladores .NET, permitiendo la creación de modelos ML con un mínimo de configuración.
- Capacidades de Aprendizaje Supervisado y No Supervisado: Incluye soporte para regresión, clasificación, clustering, y detección de anomalías.
- Entrenamiento y Evaluación: Facilita el entrenamiento de modelos, evaluación de su desempeño y ajustes de hiperparámetros
Para más información, documentación y ejemplos adicionales, visita el repositorio oficial de ML.NET en GitHub y la página oficial de ML.NET. Aquí encontrarás recursos adicionales para comenzar y aprovechar al máximo esta pequeña maravilla.
Instalación de ML.NET
Para comenzar a utilizar ML.NET en tu proyecto C#, necesitas agregar el paquete correspondiente a tu solución. Puedes hacerlo a través del administrador de paquetes NuGet. Abre la terminal o la consola del administrador de paquetes de Visual Studio y ejecuta el siguiente comando:
Install-Package Microsoft.ML
Alternativamente, puedes buscar Microsoft.ML
en la interfaz de NuGet en Visual Studio e instalarlo desde allí.
Instalación de ML.NET Builder
Aunque es posible empezar a usar ML.Net directamente, lo más sencillo es usar ML.NET Model Builder, que se instala como extensión en Visual Studio. Para ello,
- Abrimos Visual Studio.
- Navegamos a
Extensiones > Administrar extensiones
. - Busca “ML.NET Model Builder” en el cuadro de búsqueda.
- Haz clic en
Descargar
e instala la extensión.
En este caso, no hace falta agregar el Nuget directamente como hemos visto en el paso anterior. Model Builder configura las dependencias por nosotros
Cómo Usar ML.NET
Una vez que tienes la extensión instalada, puedes empezar a crear y entrenar modelos de aprendizaje automático.
En tu proyecto de Visual Studio, haz clic derecho en el proyecto en el Explorador de Soluciones. Selecciona Agregar > Machine Learning
Model Builder te guiará a través de un asistente en el que puedes seleccionar el tipo de problema que deseas resolver, como clasificación, regresión, o detección de anomalías.
En función del modelo que hayas elegido, Model Builder te pedirá que cargues el conjunto de datos que usarás para entrenar el modelo. Puedes cargar datos desde un archivo CSV, una base de datos SQL Server, entre otros.
Selecciona la fuente de datos, cargamos y configuramos los datos, y pasamos a entrenar el modelo. Model Builder automáticamente seleccionará el mejor algoritmo y ajustará los hiperparámetros.
Una vez completado el entrenamiento, Model Builder te mostrará métricas de rendimiento del modelo, como la precisión y el error cuadrático medio, dependiendo del tipo de problema seleccionado.
Ejemplo de Código Generado
Model Builder generará el código necesario para integrar y consumir el modelo en tu aplicación.
El código generado incluirá dos partes principales: la configuración del modelo y la predicción de nuevos datos.
A continuación se muestra un ejemplo de cómo puede lucir el código generado para una tarea de clasificación.
// Configuración del modelo
public static ITransformer TrainModel(MLContext mlContext, string dataPath)
{
IDataView dataView = mlContext.Data.LoadFromTextFile<ModelInput>(dataPath, hasHeader: true, separatorChar: ',');
var pipeline = mlContext.Transforms.Conversion.MapValueToKey("Label")
.Append(mlContext.Transforms.Concatenate("Features", "Feature1", "Feature2"))
.Append(mlContext.MulticlassClassification.Trainers.SdcaMaximumEntropy("Label", "Features"))
.Append(mlContext.Transforms.Conversion.MapKeyToValue("PredictedLabel"));
var model = pipeline.Fit(dataView);
return model;
}
// Predicción de nuevos datos
public static void UseModel(MLContext mlContext, ITransformer model)
{
var predictionEngine = mlContext.Model.CreatePredictionEngine<ModelInput, ModelOutput>(model);
var input = new ModelInput { Feature1 = 1.5f, Feature2 = 2.3f };
var result = predictionEngine.Predict(input);
Console.WriteLine($"Predicted Label: {result.PredictedLabel}");
}
Además, nos dará el código necesario para usarlo fácilmente desde nuestro proyecto. Por ejemplo,
//Load sample data
var sampleData = new MLModel1.ModelInput()
{
Input = 2F,
};
//Load model and predict output
var result = MLModel1.Predict(sampleData);
Así de sencillo. A partir de ahí podéis hacer modificaciones en los códigos generados por ML.NET Model Builder, o consumirlos directamente en vuestra aplicación. La verdad que no puede ser más cómodo y práctico.