#MLNET – Analyzing pipeline data in Machine Learning.Net using the new API 0.6.0 (thanks LINQ!)

Hi!

The change in the way the pipelines work in the 0.6.0 version of Machine Learning.Net, also requires some changes in our code if we want to see how the data is processed during each of the pipeline’s steps. Using the example of my previous post, I will work with the following data structure.

01 mlnet age range data

On line 21, let’s create a temporary data view with the following code

That allows me to analyze the data directly in the IDE in debugging mode, or even save the dataset in a temporary file

02 MLNet temp view of pipeline data

This may be enough, however, when working with a class that has the 4 fields of my dataset, I am forcing my App to load and map all the data for each column.

In this example, the generated model to generate a prediction only needs the fields Label and Age. So, we can remove the definition of the columns Name and Gender. We will find the following error

03 mlnet missing columns while loading data

System.InvalidOperationException

  HResult=0x80131509

  Message=Column ‘Name’ not found in the data view

  Source=Microsoft.ML.Api

By default, the load process attempts to map all columns. The solution is to enable the option to ignore missing columns, as the following example shows.

04 mlnet ignore missing columns

Finally, if we work with a lot of data, we can also leverage some LINQ features to just work with a small set of rows

05 mlnet take only 3 elements

Happy coding!

Greetings @ Toronto

El Bruno

References

My Posts

Advertisements

#MLNET – Analizando datos de la Pipeline con la nueva version API 0.6.0 (gracias LINQ!)

Buenas!

El cambio en la forma en la que las Pipelines trabajan en la version 0.6.0 de Machine Learning.Net, también requiere que el código se modifique un poco si queremos ver como se procesan los datos durante cada uno de los pasos de la Pipeline.

Retomando el ejemplo del post anterior, voy a trabajar con la siguiente estructura de datos.

01 mlnet age range data

En la línea 21, créate una vista temporal de datos con el siguiente código

que me permitirá analizar los mismos directamente en el IDE en modo de depuración, o inclusive guardarlos en archivos temporales para estudiar los mismos

02 MLNet temp view of pipeline data

Esto puede ser suficiente, sin embargo, al trabajar con una clase tipada con los 4 campos de mi set de datos, estoy obligando a mi App a cargar y mapear todos los datos en cada columna. En este ejemplo, el modelo generado permite generar una predicción del Label a partir del campo Age. De esta forma, podemos obviar la definición de las columnas Name y Gender en la carga.

Eso sí, nos encontraremos con el siguiente error

03 mlnet missing columns while loading data

System.InvalidOperationException

  HResult=0x80131509

  Message=Column ‘Name’ not found in the data view

  Source=Microsoft.ML.Api

Ya que, por defecto, la carga de datos intenta mapear todas las columnas. La solución es habilitar la opción para ignorar las columnas faltantes, como muestra el siguiente ejemplo.

04 mlnet ignore missing columns

Finalmente, si trabajamos con muchos datos, también podemos sacar provecho de Linq para solo analizar un subgrupo de filas

05 mlnet take only 3 elements

Happy coding!

Saludos @ Toronto

El Bruno

References

My Posts

#MLNET – #MachineLearning Glossary of terms

high five

Hi!

During 2 of the Machine sessions Learning I’ve used the following Docs resource.Microsoft.com as a reference to find descriptions of important terms used in Machine Learning.

Machine Learning Glossary

Using this resource I’ll avoid the need to document with Wikipedia links terms used very often, like Pipeline, Binary Clasification and others.

High Five and Happy Coding!

Greetings @ Toronto

El Bruno

References

My Posts

#MLNET – Glosario de términos utilizados en #MachineLearning

high five

Buenas!

Durante 2 de las sesiones de Machine Learning he utilizado el siguiente recurso de Docs.microsoft.com como referencia para encontrar descripciones de términos importantes utilizados en Machine Learning.

Machine Learning Glossary

Descripciones de términos como Pipeline, Binary Clasification y otros hacen que no tenga que poner un link para cada uno de Wikipedia en cada presentación.

High Five y Happy Coding!

Saludos @ Toronto

El Bruno

References

My Posts

#MLNET – Export Machine Learning.Net models to #ONNX format

Hi!

Machine Learning.Net has a new release. In this version 0.3, there are several very interesting features. Cesar De la Torre explains in a very detailed way all these new features (see references). I’ve had some extra time these days and I’ve been trying something that I find very interesting

Export Machine Learning.Net models to #ONNX format

As always the best thing describe this it with a couple of lines of code

  • Up to Line 28, the Console APP creates a pipeline, and trains it to have a ML.Net model.
  • In the following lines, using a OnnxConverter, I export the model to ONNX.

The documentation of OnnxConverter and examples of ML.Net detail more complex scenarios where for example you define which columns are included or excluded. If we open the file Onnx, it’s interesting to see how a simple pipeline is represented as this example

01

Happy Coding!

Saludos @ Toronto

El Bruno

References

My Posts

#MLNET – Exportando modelos de Machine Learning.Net a formato #ONNX

Buenas!

Machine Learning.Net tiene un nuevo release y en esta versión 0.3, hay varias features interesantes. En el post de Cesar De la Torre se comentan estas nuevas features (ver referencias). Yo he tenido un hueco en estos días y me he dedicado a probar algo que me parece muy interesante

La capacidad de exportar modelos Machine Learning.Net a formato ONNX.

Como siempre lo mejor es explicarlo con un par de líneas de código

  • Hasta la línea 28, la Console App crea un Pipeline, y lo entrena para tener un Modelo ML.Net.
  • En las siguientes líneas, utilizando un OnnxConverter, exporto el modelo a ONNX.

La documentación de OnnxConverter y los ejemplos de ML.Net detallan escenarios más complejos donde por ejemplo se definen que columnas se incluyen o excluyen. Si abrimos el archivo Onnx, es interesante ver como se representa un pipeline simple como el de este ejemplo

01

Happy Coding!

Saludos @ Toronto

El Bruno

References

My Posts

#MLNET – Loading Data In our LearningPipeline With List (Lists for ever!)

Hi!

In the last post about Machine Learning.Net I wrote about some of the novelties of the version 0.2.0. One interesting new feature allowed us to load data not only from a flat text file, like an Csv,. The new option allow us to work with objects within a collection.

The following code example shows us in the first lines the standard load option using a Flat Text File. Then from the line 10m, thew new feature using a collection of objects

Plain text files are very useful, in the same way, having the opportunity to work with collections allows us to optimize our data loads process to be able to connect directly to a standard database or any other type of data repository.

Happy Coding!

Greetings @ Burlington

El Bruno

References

My Posts

#MLNET – Cargando datos en nuestra LearningPipeline con List (colecciones for ever!)

Buenas!

 

En el último post vimos algunas de las novedades de la versión 0.2.0 de Machine Learning.Net. Una de las novedades nos permitía cargar datos ya no solo desde un archivo de texto plano, cómo puede ser un CSV, sino también trabajando con objetos dentro de una colección.

El siguiente ejemplo de código nos muestra en sus primeras líneas la carga estándar utilizando un archivo de texto plano. Luego a partir de la línea 10 la carga utilizando una colección de objetos

Los archivos de texto plano son muy útiles, sin embargo, tener la posibilidad de trabajar con colecciones nos permite poder optimizar nuestras cargas de datos para poder conectar directamente a base de datos o cualquier otro tipo de repositorio.

Happy Coding!

Greetings @ Burlington

El Bruno

References

My Posts