#MLNet – Looking at data in the Pipeline in version 0.7.0

Hi!

With the new changes In Machine Learning.Net with the 0.7.0 version, the ability to peek in the data while is processed in each step of the pipeline is a little more complicated. A while ago, explain how we could do this in the post [Understanding the step bystep of Hello World]. However, ML.Net now uses Lazy objects, so it is not possible to debug in this step-by-step mode.

One of the options that we have available, is detailed in the ML.Net Cookbook, in the section [How do I look at the intermediate data?] and a complete explanation can be read in [Schema comprehension in ML.NET]

Well, the machine Learning.Net team has created a series of operations that can help us with these scenarios in the class [https://github.com/dotnet/machinelearning-samples/blob/master/samples/csharp/common/ConsoleHelper.cs]. In the following example, based on the examples of my Machine Learning.Net sessions, I use these functions to display the first 4 rows of the initial data set and also to display the values created for the Features column

So far, it works 😀

Happy Coding.

Greetings @ Microsoft IoT

El Bruno

References

My Posts

Advertisements

#MLNet – Visualizando datos del Pipeline en la versión 0.7.0

Buenas!

Con los nuevos cambios en Machine Learning.Net con la versión 0.7.0, la capacidad dever paso a paso como los datos se procesan es un poco mas complicado. Hace untiempo, explique cómo podíamos hacer esto en el post [Understanding the step bystep of Hello World]. Sin embargo, ahora ML.Net utiliza Lazy objects, con lo que no es posible depurar en este modo paso a paso.

Una de las opciones que tenemos disponibles, se detalla en el ML.Net Cookbook, en la sección[How do I look at the intermediate data?] Y una explicación completa se puede leer en [Schema comprehension in ML.NET]

Pues bien, el equipo de Machine Learning.Net ha creado una serie de operaciones que pueden ayudarnos con estos escenarios en el repositorio de Samples en la clase [https://github.com/dotnet/machinelearning-samples/blob/master/samples/csharp/common/ConsoleHelper.cs]. En el siguiente ejemplo, basado en los ejemplos de mis sesiones de MachineLearning.Net, utilizo estas funciones para mostrar las primeras 4 filas del set de datos inicial y también para mostrar cómo se construyen los valores en la columna Features

Lo apuntare como una solución.

Happy Coding!

Saludos @ Microsoft IoT

El Bruno

References

My Posts

#MLNET – Write and Load models using Machine Learning .Net

Hi !

Today post fast that the code is self explanatory.

First, based on the previous posts, the process of defining and training the model. The important thing happens on lines 15 and 16, where the model is recorded.

And then another project, where the engraved model is used. Attention to lines 18 to 21, from there the way to use the model is the same

Happy Coding!

Greetings @ Toronto

El Bruno

References

My Posts

#MLNET – Guardando y reutilizando modelos con Machine Learning .Net

Buenas!

Hoy post rápido que el código se explica por si solo.

En primer lugar, basado en los posts anteriores, el proceso de definir y entrenar el modelo. Lo importante sucede en líneas 15 y 16, donde se graba el modelo.

Y luego otro proyecto, donde se utiliza el modelo grabado. Atención a las líneas 18 a 21, a partir de allí la forma de utilizar el modelo es el mismo.

Happy Coding!

Greetings @ Toronto

El Bruno

References

My Posts

#MLNET – Understanding the step by step of Hello World

Hi!

Today while we were recording a a podcast on ML.Net, one question arose about how the data is processed in Machine Learning .Net. Well, let’s go back to my previous example that believes in the past post and let’s see step by step this.

In short, these are the steps to train a model and make a prediction:

  • We created a Machine Learning Pipeline
  • We load in memory a data file that we will use to train our model
  • We work on the columns, defining Labels and Features
  • We train the modelUsing the model we make a prediction about a new data set

As well, to know a little what happens in each of these steps let’s see the following debugging points in Visual Studio 2017.

Once we have created the Pipeline and loaded the initial data file, we can see that it has a series of columns and rows. In this case, the definition of the columns is obtained from the class [AgeRangeData] which is the type that we define for the data load

.

I1

In the rows, we can see that we have the values ​​separated by a [|], with the data of the original CSV.

In the next step, we define that the Label work column will be treated as a dictionary. This step converts all the values ​​of this column into numeric and then work with them.

I2

Line, 17, in this step the Features are defined. In this case, it is an aggregation of the [AgeStart] and [AgeEnd] columns. In the following image we can see how the Pipeline, adds these values ​​at the end of each row and is also added as a new column.

I3

At this point we have all the data ready to choose a learning algorithm and train our model.

I4

In subsequent posts I will comment on other scenarios in which we can use ML.Net.

Happy Coding!

Greetings @ Toronto

El Bruno

References

My Posts

#MLNET – Entendiendo el paso a paso del Hola Mundo

Buenas!

Hoy mientras grabábamos un podcast sobre ML.Net, surgió la pregunta sobre cómo se procesan los datos en Machine Learning .Net. Pues bien, volvamos al ejemplo anterior que cree en el post pasado y veamos el paso a paso de este.

Resumiendo, y mucho, estos son los pasos para entrenar un modelo y realizar una predicción:

  • Creamos una Machine Learning Pipeline
  • Cargamos en memoria un archivo de datos que utilizaremos para entrenar nuestro modelo
  • Trabajamos sobre las columnas, definiendo Labels y Features
  • Entrenamos el modelo
  • Utilizando el modelo realizamos una predicción sobre un nuevo set de datos

Pues bien, para conocer un poco lo que sucede en cada uno de estos pasos veamos los siguientes puntos de depuración

Una vez que tenemos creado el Pipeline y cargado el archivo de datos inicial, podemos ver que el mismo posee una serie de columnas y filas. En este caso, la definición de las columnas se obtiene de la clase [AgeRangeData] que es el tipo que definimos para la carga de datos.

I1

En las filas, podemos ver que tenemos los valores separados por un [|], con los datos del CSV original.

En el siguiente paso, definimos que la columna de trabajo Label será tratada como un diccionario. Este paso convierte todos los valores de esta columna en numéricos para luego poder trabajar con los mismos.

I2

Linea, 17, en este paso se definen las Features. En este caso, es una agregación de las columnas [AgeStart] y [AgeEnd]. En la siguiente imagen podemos ver como el Pipeline, agrega estos valores al final de cada fila y se agregan también como una nueva columna.

I3

En este punto ya tenemos todos los datos preparados para elegir un algoritmo de aprendizaje y entrenar nuestro modelo.

I4

En siguientes posts comentare otros escenarios en los que podemos utilizar ML.Net.

Happy Coding!

Saludos @ Toronto

El Bruno

References

My Posts

#MLNET – Hello World in ML.Net, Machine Learning for .Net !

Hi!

I can not wait to start writing a little more about ML.Net. For now just a couple of code snippets to show how simple and fast it can be

Starting with a set of data with ages to classify babies and kids, in a CSV file. All based on my personal criteria

And now a little magic with ML. A .Net Core Console application where we create a LearningPipeline and train it with the previous CSV information

Below we check a couple of predictions with Age Ranges that are not part of the original CSV

I1

Happy coding!

Greetings @ Burlington

El Bruno

References

 

#MLNET – Hola Mundo con ML.Net, Machine Learning for .Net !

Buenas!

No puedo esperar a empezar a escribir un poco mas al respecto sobre ML.Net. Por ahora solo un par de code snippets para demostrar lo simple y rápido que puede ser

Comenzando con un set de datos con edades para clasificar babies y kids, en un archivo CSV. Todo basado en mi criterio personal

Y ahora un poco de magia con ML. Una aplicación de Consola en donde creamos un LEarningPipeline y lo entrenamos con la información de CSV

A continuación verificamos un par de predicciones con Age Ranges que no son parte del CSV original

I1

Happy coding!

Saludos @ Burlington

El Bruno

References

 

#Event – Materials used during the Global Azure Bootcamp [#ArtificialIntelligence – Using #Azure #CognitiveServices] #GlobalAzureTo

Hi!

I have to start by thanking Cheryl (@explorengcheryl), Ehsan (@ehsaneskandarim), Luca (@lucavgobbi), Armin (@ArminPage) and all the other people who participated in the organization of the event. Coordinating a session for almost 150 people is a challenge and this event has been a success. Congratulations!!!

DbWYkdmWkAIwoyN.jpg large.jpg

Personally spend a very pleasant time. I was lucky to see many people again, to put some real faces to many people and also close the event with a couple of laughs.

After a while doing this, I know that my session has gone as I wanted when the first tweets about it are not highlight the live coding demos (errors in demo mode included). But they focus on the toilet paper history and on the chihuahuas. And how we should not be afraid of AI, but take advantage of it to create better apps.

This sentence also makes some people think about it …

“My wife is never wrong. Even when she is wrong, there comes a time in the discussion in which surprisingly she returns to be right.”

Slide time

And source code and flow created during the session

https://github.com/elbruno/events/tree/master/2018%2004%2021%20Global%20Azure%20Bootcamp%20AI

See you again on 2019!

Greetings @ Burlington

El Bruno

Bonus: Otro par de tweets

 

 

 

 

 

 

 

 

 

 

#Event – Materiales utilizados durante el Global Azure Bootcamp en mi [#ArtificialIntelligence – Using #Azure #CognitiveServices] #GlobalAzureTo

Buenas!

Tengo que comenzar dando las gracias a Cheryl (@explorengcheryl), Ehsan (@ehsaneskandarim), Luca (@lucavgobbi), Armin (@ArminPage) y a todas las demás personas que participaron en la organización del evento. Coordinar una sesión para casi 150 personas es un desafío y este evento ha sido un éxito. Felicitaciones!!!

DbWYkdmWkAIwoyN.jpg large.jpg

En lo personal pase un rato muy agradable. Tuve la suerte de poder volver a ver a muchos conocidos, a desvirtualizar a muchas personas y además de cerrar el evento con un par de risas.

Después de un tiempo dando sesiones, se que mi sesión ha ido como yo quería cuando los primeros tweets al respecto no remarcan las demos codificando en vivo (errores en modo demo incluidos). Sino que se centran en la historia del papel higiénico y en los chihuahuas. Y en como no debemos tener miedo a AI, sino aprovechar la misma para crear mejores apps.

Y una frase que parece que ha marcado a varios

“My wife is never wrong. Even when she is wrong, there comes a time in the discussion in which surprisingly she returns to be right.”

Como siempre, es momento de compartir las slides

Y el código fuente de las apps y el Microsoft Flow que cree en directo durante la demo.

https://github.com/elbruno/events/tree/master/2018%2004%2021%20Global%20Azure%20Bootcamp%20AI

Una vez más, muchas gracias y nos vemos en el 2019!

Saludos @ Burlington

El Bruno

Bonus: Otro par de tweets