¿Qué es ML.NET?
ML.NET es un marco de aprendizaje automático gratuito, de código abierto y multiplataforma, creado por Microsoft, para la plataforma de desarrolladores de .NET.
ML.NET es un marco de aprendizaje automático gratuito, de código abierto y multiplataforma, creado por Microsoft, para la plataforma de desarrolladores de .NET.
ML.NET es un marco de aprendizaje automático gratuito, de código abierto y multiplataforma para la plataforma para desarrolladores de .NET.
ML.NET le permite entrenar, crear y enviar modelos de aprendizaje automático personalizados mediante C# o F# para una variedad de escenarios de ML. ML.NET incluye funciones como el aprendizaje automático automatizado (AutoML) y herramientas como ML.NET CLI y ML.NET Model Builder, que facilita aún más la integración del aprendizaje automático en sus aplicaciones.
ML.NET sigue los mismos pasos básicos para casi todos los escenarios; combina la carga de datos, las transformaciones y el entrenamiento de modelos para facilitar la creación de modelos de aprendizaje automático.
MLContext es el punto de partida para todas las operaciones de ML.NET. MLContext
se usa para todos los aspectos de la creación y el consumo de un modelo de ML.NET. Es similar conceptualmente a DbContext
en Entity Framework.
var mlContext = new MLContext();
Una vez que tenga una instancia de un MLContext
, puede cargar y transformar datos, elegir el mejor algoritmo para la tarea de aprendizaje automático y entrenar el modelo. Una vez entrenado, puede probar la precisión del modelo, guardarlo en el disco y usarlo para realizar predicciones. Un MLContext
se puede inicializar desde un modelo que se guardó anteriormente en el disco.
El aprendizaje automático utiliza datos conocidos (por ejemplo, datos de entrenamiento) para encontrar patrones a fin de hacer predicciones sobre datos nuevos y desconocidos.
Las entradas para el aprendizaje automático se denominan Características, que son los atributos que se usan para realizar predicciones. La salida del aprendizaje automático se denomina Etiqueta, que es la predicción real.
Los datos de ML.NET se representan como IDataView, que es una manera flexible y eficaz de describir datos tabulares (por ejemplo, filas y columnas). Los objetos IDataView pueden contener números, texto, booleanos, vectores y mucho más. Puede cargar datos desde archivos o desde orígenes de streaming en tiempo real a un objeto IDataView.
LoadFromTextFile
le permite cargar datos de TXT, CSV, TSV y otros formatos de archivo.
IDataView trainingData = mlContext.Data
.LoadFromTextFile<SentimentInput>(dataPath, separatorChar: ',', hasHeader: true);
LoadFromEnumerable
permite cargar desde colecciones en memoria, JSON/XML, bases de datos relacionales y no relacionales (por ejemplo, SQL, CosmosDB, MongoDB) y muchos otros orígenes de datos.
IDataView trainingData = mlContext.Data
.LoadFromEnumerable<SentimentInput>(inMemoryCollection);
En la mayoría de los casos, los datos que tiene disponibles no son adecuados para usarlos directamente para entrenar un modelo de aprendizaje automático. Los datos sin procesar deben procesarse previamente mediante transformaciones de datos.
Los transformadores toman datos, realizan algún trabajo en ellos y devuelven nuevos datos transformados.
Hay un conjunto integrado de transformaciones de datos para reemplazar los valores que faltan, la conversión de datos, la caracterización de texto, etc.
// Convert sentiment text into numeric features
IEstimator<ITransformer> dataTransformPipeline = mlContext.Transforms.Text
.FeaturizeText("Features", "SentimentText");
Al usar el aprendizaje automático y el ML.NET, debe elegir una tarea de aprendizaje automático que se adapte a su escenario. ML.NET ofrece más de 30 algoritmos (o instructores) para una variedad de tareas de ML:
Tarea de ML | Algoritmos |
---|---|
Clasificación binaria (por ejemplo, análisis de sentimiento) | AveragedPerceptronTrainer, SdcaLogisticRegressionBinaryTrainer |
Clasificación de varias clases (por ejemplo, categorización de temas) | LightGbmMulticlassTrainer, OneVersusAllTrainer |
Regresión (por ejemplo, predicción de precios) | LbfgsPoissonRegressionTrainer, FastTreeRegressionTrainer |
Agrupación en clústeres (por ejemplo, segmentación de clientes) | KMeansTrainer |
Detección de anomalías (por ejemplo, detección de picos de ventas de Shampoo) | RandomizedPcaTrainer |
Recomendación (por ejemplo, recomienda una película) | MatrixFactorizationTrainer |
Clasificación (por ejemplo, resultados de la búsqueda) | LightGbmRankingTrainer, FastTreeRankingTrainer |
IEstimator<ITransformer> trainer = mlContext.BinaryClassification.Trainers
.AveragedPerceptron(labelColumnName: "Sentiment", featureColumnName: "Features"));
IEstimator<ITransformer> trainingPipeline = dataTransformPipeline.Append(trainer);
Las transformaciones de los datos y los algoritmos que ha especificado no se ejecutan hasta que llama al método Fit()
(debido al enfoque de carga diferida de ML.NET). Es entonces cuando se produce el entrenamiento del modelo.
Un estimador toma datos, aprende de los datos y crea un transformador. En el caso del entrenamiento del modelo, los datos de entrenamiento son la entrada y el modelo entrenado es la salida; Por lo tanto, el modelo entrenado es un transformador que convierte las características de entrada de los nuevos datos en predicciones de salida.
ITransformer model = pipeline.Fit(trainingData);
ML.NET ofrece evaluadores que examinan el rendimiento del modelo en una variedad de métricas:
// Make predictions on test data
IDataView predictions = model.Transform(testDataView);
// Evaluate model and return metrics
var metrics = mlContext.BinaryClassification
.Evaluate(predictions, labelColumnName: "Sentiment");
// Print out accuracy metric
Console.WriteLine("Accuracy" + metrics.Accuracy);
Puede guardar el modelo entrenado como un archivo binario que luego se integra en las aplicaciones .NET.
mlContext.Model.Save(model, trainingData, "model.zip");
Una vez que haya guardado el modelo entrenado, puede cargar el modelo en sus otras aplicaciones .NET.
MLContext mlContext = new MLContext();
DataViewSchema predictionPipelineSchema;
ITransformer trainedModel = mlContext.Model.Load("model.zip", out predictionPipelineSchema);
A continuación, puede usar el modelo cargado para empezar a realizar predicciones. Puede usar el Motor de predicción, que es una API útil que se usa para realizar predicciones únicas, o el método Transformación, que se usa para realizar predicciones por lotes.
var predEngine = mlContext.Model.CreatePredictionEngine(model);
SentimentInput sampleComment = new SentimentInput{ SentimentText = "This is very rude!" };
SentimentOutput result = predEngine.Predict(sampleComment);
Console.WriteLine(result.Prediction);
Obtenga información sobre cómo usar un modelo de Azure Machine Learning entrenado
ML.NET es un marco de aprendizaje automático para desarrolladores de .NET; puede usar ML.NET para integrar modelos de aprendizaje automático en sus aplicaciones .NET. Puede usar ML.NET en muchos escenarios, como el análisis de sentimientos, predicción de precios, recomendación de productos, proyección de ventas, clasificación de imágenes, detección de objetos y mucho más. Consulte el repositorio de ejemplos de GitHub para ver más ejemplos de lo que puede hacer con ML.NET.
IA es una rama de la informática que implica entrenar equipos para hacer cosas que, por lo general, requieren inteligencia humana. El aprendizaje automático es un subconjunto de IA que implica que los equipos aprender de los datos y busquen patrones en estos para poder realizar predicciones sobre datos nuevos por sí mismos.
Microsoft ofrece muchos productos y servicios de IA y ML, por lo que aquí se muestra un desglose de las diferencias entre ellos:
Puede usar ML.NET con casi cualquier aplicación .NET, incluidas aplicaciones y servicios web, microservicios/contenedores, aplicaciones de escritorio (WPF y WinForms), Azure Functions y cualquier tipo de aplicación del lado servidor de Azure, y aplicaciones de consola.
ML.NET se admite en .NET, .NET Core (versión 2.0 y posteriores) y .NET Framework (versión 4.6.1 y posteriores).
ML.NET se admite actualmente en procesos x64 y x86.
ML.NET es multiplataforma, por lo que se admite en Windows, Linux y macOS.
Sí! Al igual que el resto de la plataforma .NET, ML.NET es 100% gratis. Para obtener más información, consulte .NET es gratuito. ML.NET tiene licencia bajo la licencia del MIT.
ML.NET se admite actualmente para C# y F#.
Puede empezar a usar ML.NET con este tutorial, o puede consultar nuestro ML.NET docs para obtener más información.
Puede agregar ML.NET a cualquier proyecto .NET agregando el paquete Microsoft.ML NuGet, o puede comenzar con ML.NET Model Builder (Windows) o la CLI de ML.NET (Windows, macOS y Linux).
Nuestro tutorial paso a paso le ayudará a ejecutar ML.NET en su equipo.