#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