La clasificación es una técnica supervisada de machine learning utilizada para predecir categorías o clases. En este módulo aprenderás a crear, entrenar y publicar modelos de clasificación con el diseñador de Azure Machine Learning.
Tutorial - Crea un modelo de clasificación con Azure Machine Learning designer
1. Crea un modelo de clasificación con Azure
Machine Learning designer
La clasificación es una técnica supervisada de machine learning utilizada para predecir
categorías o clases. En este módulo aprenderás a crear, entrenar y publicar modelos de
clasificación con el diseñador de Azure Machine Learning.
Este tutorial es una traducción de “Create a classification model with Azure Machine Learning
designer”, el cual está disponible en la plataforma de Microsoft Learn:
https://docs.microsoft.com/en-us/learn/modules/create-classification-model-azure-machine-
learning-designer/
2. Unidad 1. Introducción
La clasificación es una forma de machine learning que se utiliza para predecir a qué categoría
o clase pertenece un elemento.
Por ejemplo, una clínica de salud podría usar los atributos de un paciente (como edad, peso,
presión arterial, etc.) para predecir si el paciente está en riesgo de diabetes. En este caso, las
propiedades del paciente son las características, y la etiqueta es una clasificación de 0 o 1, que
representa si la persona es no diabética o diabética.
La clasificación es un ejemplo de una técnica supervisada de machine learning en la que
entrenas un modelo por medio de datos, los cuales incluyen tanto las características como los
valores conocidos de la etiqueta, de modo que el modelo aprenda a ajustar las combinaciones
de características a la etiqueta. Luego, después de completar el entrenamiento, puedes usar el
modelo entrenado para predecir etiquetas en nuevos elementos para los que se desconoce este
dato.
Puede usar el diseñador de Microsoft Azure Machine Learning para crear modelos de
clasificación mediante una interfaz visual en la que arrastras y sueltas elementos, sin necesidad
de escribir ningún código (o al mínimo).
En este módulo, aprenderás a:
• Usar el diseñador de Azure Machine Learning para entrenar un modelo.
• Usar un modelo de clasificación para hacer inferencias.
• Implementar un modelo de clasificación como servicio.
4. Unidad 2. Crea un workspace de Azure
Machine Learning
Azure Machine Learning es una plataforma basada en la nube que te permite crear y operar
soluciones de aprendizaje automático en Azure. Incluye una amplia gama de características y
capacidades que ayudan a los científicos de datos a preparar datos, entrenar modelos, publicar
servicios predictivos y monitorear su uso.
Una de estas características es una interfaz visual llamada diseñador, que puedes usar para
entrenar, probar e implementar modelos de machine learning sin escribir código.
Crea un workspace de Azure Machine Learning
Para usar Azure Machine Learning, crea un workspace en tu suscripción de Azure. Podrás usar
este espacio de trabajo para administrar datos, calcular recursos, códigos, modelos y otros
artefactos relacionados con cargas de trabajo de machine learning.
Si aún no tienes uno, sigue estos pasos para crear un espacio de trabajo:
1. Inicia sesión en Azure Portal con tus credenciales de Microsoft.
2. Selecciona +Crear un recurso, busca Machine Learning y crea un nuevo recurso de
Machine Learning con la siguiente configuración:
o Nombre del espacio de trabajo
o Suscripción
o Grupo de recursos
o Ubicación
o Edición Enterprise del espacio de trabajo
3. Espera a que se cree el espacio de trabajo (puede tardar unos minutos). Luego ve accede
a él en el portal.
4. En la página Descripción general de tu espacio de trabajo, inicia Azure Machine
Learning Studio (o abre una nueva pestaña del navegador y accede a
https://ml.azure.com) e inicia sesión en Azure Machine Learning Studio con tu cuenta
de Microsoft.
5. 5. En Azure Machine Learning Studio, da clic en el ícono ☰ en la esquina superior
izquierda para ver las diferentes páginas en la interfaz, las cuales pueden usarse para
administrar los recursos en su espacio de trabajo.
Puedes administrar tu espacio de trabajo por medio del portal de Azure, pero para los científicos
de datos y los ingenieros de operaciones de Machine Learning, Azure Machine Learning Studio
proporciona una interfaz de usuario más enfocada para administrar los recursos del espacio de
trabajo.
Importante
Si tienes la intención de usar un espacio de trabajo de Azure Machine Learning con la edición
básica, actualízalo a la edición Enterprise para que la interfaz del diseñador esté disponible.
6. Unidad 3. Crea recursos de cómputo
Para entrenar e implementar modelos con el diseñador de Azure Machine Learning, necesitas
un procesador que ejecute las tareas de entrenamiento, prueba del modelo y alojamiento del
modelo en un servicio implementado.
Crear objetivos de cómputo
Los objetivos informáticos son recursos basados en la nube en los que puede ejecutar procesos
de entrenamiento de modelos y exploración de datos.
1. En Azure Machine Learning Studio, ve la página Compute (en Manage). Aquí es donde
administrarás los objetivos de procesamiento para tus actividades de ciencia de datos.
Hay cuatro tipos de recursos informáticos que puede crear:
• Instancias informáticas: estaciones de trabajo de desarrollo que los científicos de
datos pueden usar para trabajar con datos y modelos.
• Clústeres de cómputo: clústeres escalables de máquinas virtuales para el
procesamiento bajo demanda del código de experimento.
• Clústeres de inferencia: objetivos de implementación para servicios predictivos
que utilizan tus modelos entrenados.
• Procesamiento adjunto: enlaces a recursos informáticos de Azure existentes,
como máquinas virtuales o clústeres de Azure Databricks.
2. En la pestaña Compute Instances, agrega una nueva instancia de proceso con la
siguiente configuración. Lo usarás para probar tu modelo:
• Compute name: ingresa un nombre único
• Tipo de máquina virtual: CPU
• Tamaño de la máquina virtual: Standard_DS2_v2
3. Mientras se crea la instancia de cómputo, cambia a la pestaña Compute Clusters y agrega
un nuevo compute clúster con la siguiente configuración. Lo usarás para entrenar un
modelo de aprendizaje automático:
• Compute name: ingresa un nombre único
• Tamaño de la máquina virtual: Standard_DS2_v2
• Prioridad de máquina virtual: Dedicated
• Número mínimo de nodos: 2
7. • Número máximo de nodos: 2
• Segundos inactivos antes de reducir: 120
4. Mientras se crea el clúster de proceso, cambia a la pestaña Inference Clusters y agrega
un nuevo clúster con la siguiente configuración. Lo usarás para implementar tu modelo
como servicio.
• Compute name: ingresa un nombre único
• Servicio Kubernetes: Create new
• Región: selecciona una región diferente a la utilizada para el workspace
• Tamaño de la máquina virtual: Standard_DS2_v2
• Propósito del clúster: Dev-test
• Número de nodos: 2
• Configuración de red: Basic
• Habilitar configuración SSL: Unselected
5. Verifica que el clúster de inferencia esté en el estado de creación; llevará un tiempo
crearlo, así que déjalo por ahora.
Nota
En un entorno de producción, normalmente establecerías el valor mínimo de número de nodos
en 0 para que el cálculo solo se inicie cuando sea necesario. Sin embargo, el cálculo puede tardar
un tiempo en iniciarse, por lo que para reducir la cantidad de tiempo que pasa esperando en
este módulo, lo has inicializado con dos nodos en ejecución permanente.
Los objetivos de cálculo tardarán un tiempo en crearse. Puedes pasar a la siguiente actividad
mientras esperas.
8. Unidad 4. Explora los datos
Para entrenar un modelo de clasificación, necesitas un conjunto de datos que incluya
características históricas (características de la entidad para la que desea hacer una predicción)
y valores de etiqueta conocidos (el indicador de clase que deseas entrenar para que un modelo
lo prediga).
Crea un conjunto de datos
En Azure Machine Learning, los datos para el entrenamiento de modelos y otras operaciones
generalmente se encapsulan en un objeto llamado dataset.
1. En Azure Machine Learning studio , accede a la página Datasets. Los datasets representan
archivos de datos específicos o tablas con las que planeas trabajar en Azure ML.
2. Crea un dataset a partir de un archivo web, usando la siguiente configuración:
o Información básica:
Web URL: https://aka.ms/diabetes-data
Nombre: diabetes-data
Tipo de Dataset: Tabular
Descripción: Diabetes data
o Configuración y vista previa:
Formato de archivo: Delimited
Delimitador: Comma
Codificación: UTF-8
Encabezados de columna: Use headers from first file
Saltar registros: None
o Esquema:
Incluir todas las columnas excepto Path
Revisar los tipos automáticamente detectados
o Confirmar detalles:
Do not profile the dataset after creation
3. Una vez creado el conjunto de datos, ábrelo y vea la página Explore para ver una muestra
de los datos. Estos datos representan detalles de pacientes que han sido probados para
diabetes.
9. Crea un pipeline
Para comenzar con el diseñador de Azure Machine Learning, primero debes crear un pipeline
y agregar el conjunto de datos con el que deseas trabajar.
1. En Azure Machine Learning studio para tu workspace, accede a la página de Designer y
selecciona + para crear un nuevo pipeline.
2. En el panel de Settings, cambia el nombre predeterminado (Pipeline-Created-on-date)
a Diabetes Training (si el panel de Settings no es visible, da clic en el ícono ⚙ al lado
del nombre del pipeline en la parte superior).
3. Observa que necesitas especificar un cómputo de destino sobre el cual ejecutar el
pipeline. En el panel Settings, haz clic en Select compute target y elige el clúster de
cómputo aml-cluster creado previamente.
4. Del lado izquierdo del diseñador, expande la sección Datasets y arrastra el
dataset diabetes-data creado en el ejercicio anterior hacia el canvas de trabajo.
5. Selecciona el dataset diabetes-data en el canvas y observa sus propiedades (puede ser que
se abran automáticamente). En la pestaña outputs, selecciona el ícono Visualize (se
parece a una gráfica de columnas).
6. Revisa el esquema de los datos y observa que puedes ver las distribuciones de las distintas
columnas en forma de histogramas.
7. Desplázate hacia la derecha y selecciona el encabezado para la columna Diabetic, y
observa que contiene dos valores: 0 y 1. Estos valores representan las dos clases posibles
para la etiqueta que el modelo predecirá: 0 significa que el paciente no tiene diabetes,
mientras que un valor de 1 significa que el paciente es diabético.
8. Desplázate hacia la izquierda y revisa las otras columnas, que representan las
características que se utilizarán para predecir la etiqueta. Considera que la mayoría de
estas columnas son numéricas, pero cada entidad está en su propia escala. Por ejemplo,
los valores de edad varían de 21 a 77, mientras que los valores de DiabetesPedigree varían
de 0.078 a 2.3016. Al entrenar un modelo de aprendizaje automático, a veces es posible
que valores más grandes dominen la función predictiva resultante, reduciendo la
influencia de las características que en una escala más pequeña. Por lo general, los
científicos de datos mitigan este posible sesgo al normalizar las columnas numéricas para
que estén en escalas similares.
9. Cierra la ventana diabetes-data result visualization y luego cierra o cambia el tamaño del
panel de configuración con el icono X o el ícono ↗↙ para que puedas ver el conjunto de
datos en el canvas de esta manera:
10. Añade transformaciones
Antes de que puedas entrenar un modelo, normalmente necesitas aplicar algunas
transformaciones de preprocesamiento a los datos.
1. En el panel de la izquierda, contrae la sección Datasets si aún está expandida, y muestra
la sección Data Transformation, la cual contiene un amplio rango de módulos que puedes
utilizar para transformar tus datos antes de entrenar el modelo.
2. Arrastra un módulo Normalize Data al canvas debajo del dataset diabetes-data y luego
conecta la salida inferior del dataset diabetes-data a la entrada del módulo Normalize
Data, de la siguiente manera:
3. Selecciona el módulo Normalize Data y observa sus configuraciones, notando que
requiere que especifiques el método de transformación y las columnas que serán
transformadas.
4. Establece la transformación en MinMax y edita las columnas para que incluya las
siguientes:
o Pregnancies
o PlasmaGlucose
o DiastolicBloodPressure
o TricepsThickness
11. o SerumInsulin
o BMI
o DiabetesPedigree
o Age
La transformación de datos está normalizando las columnas numéricas para colocarlas en la
misma escala, lo que debería ayudar a evitar que las columnas con valores grandes dominen el
entrenamiento del modelo. Por lo general, se aplicarían demasiadas transformaciones de
preprocesamiento para preparar los datos para el entrenamiento, pero simplificaremos las cosas
en este ejercicio.
Ejecuta el pipeline
Para aplicar las transformaciones de datos, debe ejecutar el pipeline como un experimento.
1. Asegúrate de que tu pipeline se observa como la siguiente imagen:
12. 2. Elige Submit y ejecuta el pipeline como un nuevo experimento llamado diabetes-
training en tu clúster de cómputo.
3. Espera a que finalice la ejecución – esta tarea puede tardar algunos minutos.
El dataset está preparado ahora para entrenar el modelo.
13. Unidad 5. Crea y ejecuta un pipeline de
entrenamiento
Después de haber utilizado las transformaciones de datos para preparar los datos, puedes usarlos
para entrenar un modelo de machine learning.
Agrega módulos de entrenamiento
Es una práctica común entrenar el modelo usando un subconjunto de datos, mientras se
retienen algunos datos para probar el modelo entrenado. Esto permite comparar las etiquetas
que predice el modelo con las etiquetas reales conocidas en el dataset original.
En este ejercicio, extenderás el pipeline Diabetes Training así:
14. Sigue los pasos mostrados a continuación, utilizando la imagen de arriba como referencia a
medida que agregas y configuras los módulos necesarios.
1. Abre el pipeline Diabetes Training creado con anterioridad.
2. En el panel de la izquierda, en la sección Data Transformations, arrastra un módulo Split
Data hacia el canvas debajo del módulo Normalize Data. Entonces, conecta la salida
izquierda del Dataset Transformado del módulo Normalize Data hacia la entrada del
módulo Split Data.
3. En el módulo Split Data, configura sus parámetros:
o Modo de división: Split Rows
o Fracción de filas de salida en el primer dataset: 0.7
o Semilla aleatoria: 123
o División estratificada: False
4. Expande la sección Model Training en el panel de la izquierda y arrastra un módulo Train
Model hacia el canvas debajo del módulo Split Data. Entonces, conecta el dataset1 de
Resultados (salida izquieda) del módulo Split Data al Dataset (entrada derecha) del
módulo Train Model.
5. El modelo que estamos entrenando predecirá el valor para la columna Diabetic, así que
seleccionamos el módulo Train Model y modificamos sus parámetros estableciendo Label
column en Diabetic (¡verifica que coincida el nombre!)
6. La etiqueta Diabetic que el modelo predecirá es una clase (0 or 1), así que necesitamos
entrenar al modelo utilizando un algoritmo de clasificación. Dado que solo hay dos
posibles clases, utilizaremos un algoritmo de clasificación binaria. Expande la sección
Machine Learning Algorithms, y bajo Classification, arrastra un módulo Two-Class
Logistic Regression al canvas, colocándolo a la izquierda del modulo Split Data y arriba
del módulo Train Model. Entonces, conecta su salida a la entrada Untrained
model (izquierda) del módulo Train Model.
Nota
Existen múltiples algoritmos que puedes usar para entrenar un modelo de clasificación. Para
obtener ayuda para elegir uno, echa un vistazo a la Machine Learning Algorithm Cheat Sheet
for Azure Machine Learning designer.
7. Para probar el modelo entrenado, debemos usarlo para calificar el conjunto de datos de
validación que está en espera al haber dividido los datos originales; en otras palabras,
predecir etiquetas para las características en el conjunto de datos de validación. Expande
la sección Model Scoring & Evaluation y arrastra un módulo Score Model al canvas,
debajo del módulo Train Model. Entonces, conecta la salida del módulo Train Model a la
entrada Trained model (izquierda) del módulo Score Model; y conecta la salida Results
15. dataset2 (derecha) del módulo Split Data a la entrada Dataset (derecha) del módulo Score
Model.
8. Asegúrate de que tu pipeline se parece a la siguiente imagen:
Ejecuta el pipeline de entrenamiento
Ahora estás listo para ejecutar el pipeline de entrenamiento y entrenar al modelo.
1. Elige Submit, y ejecuta el pipeline utilizando el experimento diabetes-training.
2. Espera a que el experimento finalice su ejecución. Puede tomar 5 minutos o más.
3. Cuando el experimento finaliza su ejecución, selecciona el módulo Score Model y en el
panel de configuración, en la pestaña Outputs + Logs, debajo de Data outputs en la
sección Scored dataset, utiliza el ícono Visualize para observar los resultados.
4. Desplázate a la derecha, y observa que al lado de la columna Diabetic (la cual contiene
los valores conocidos de la etiqueta) hay una nueva columns titulada Scored Labels, la
cual contiene los valores predichos de la etiqueta, y la columna Scored
Probabilities contienen valores de probabilidad entre 0 y 1. Esto indica la probabilidad
de una predicción positiva, así que probabilidades mayores a 0.5 resultan en un valor
predicho de 1 (diabético), mientras que probabilidades entre 0 y 0.5 resultan en una
etiqueta predicha de 0 (no diabético).
5. Cierra la ventana Score Model result visualization.
16. El modelo predice valores para la etiqueta Diabetic, pero ¿qué tan confiables son sus
predicciones? Para evaluar eso, debe evaluar el modelo.
17. Unidad 6. Evalúa un modelo de clasificación
Los datos de validación retenidos y utilizados para calificar el modelo incluyen los valores
conocidos para la etiqueta. Por tanto, para validar el modelo se puede comparar los valores
verdaderos de la etiqueta con los valores predichos (misma etiqueta) al calificar el conjunto de
datos de validación. Según esta comparación, puedes calcular varias métricas que describen qué
tan bien funciona el modelo.
Agrega un módulo Evaluate Model
1. Abre el pipeline Diabetes Training creado en la entrada anterior.
2. En el panel de la izquierda, en la sección Model Scoring & Evaluation, arrastra un
módulo Evaluate Model al canvas, bajo el módulo Score Model, y conecta la salida del
módulo Score Model a la entrada izquierda Scored dataset del módulo Evaluate Model.
3. Asegúrate de que tu pipeline es similar al mostrado en la figura:
4. Selecciona Submit y ejecuta el pipeline del experimento diabetes-training.
18. 5. Espera a que termine la ejecución del experimento.
6. Cuando finalice la ejecución del experimento, seleccione el módulo Evaluate Model y en
el panel de configuración, en la pestaña Outputs + Logs, bajo Data outputs en la sección
Evaluation results, usa el ícono Visualize para ver las métricas de rendimiento. Estas
métricas pueden ayudar a los científicos de datos a evaluar qué tan bien predice el modelo
en función de los datos de validación.
7. Echa un vistazo a la matriz de confusión para el modelo, que es una tabulación de los
recuentos de valores predichos y reales para cada clase posible. Para un modelo de
clasificación binaria como este, en el que está prediciendo uno de los dos valores posibles,
la matriz de confusión es una cuadrícula de 2x2 que muestra los recuentos de valores
predichos y reales para las clases 0 y 1, similar a esto:
La matriz de confusión muestra casos en los que los valores predichos y reales fueron 1
(conocidos como true positives) en la parte superior izquierda, y casos en los que los valores
predichos y reales fueron 0 (true negatives) en la parte inferior derecha. Las otras celdas
muestran casos en los que los valores predichos y reales difieren (false positives y false
negatives).
Las celdas en la matriz se colorean de modo que cuantos más casos se representan en la celda,
más intenso es el color, con el resultado de que puede identificar un modelo que predice con
precisión para todas las clases al buscar una línea diagonal de celdas de colores intensos arriba
a la izquierda a la derecha abajo (en otras palabras, las celdas donde los valores predichos
coinciden con los valores reales).
Para un modelo de clasificación de múltiples clases (donde hay más de dos clases posibles), se
utiliza el mismo enfoque para tabular cada combinación posible de recuentos de valores reales
y pronosticados, por lo que un modelo con tres clases posibles daría como resultado una matriz
de 3x3 con un línea diagonal de celdas donde coinciden las etiquetas predichas y reales.
19. 8. Revisa las métricas a la izquierda de la matriz de confusión, que incluyen:
o Accuracy (exactitud): la proporción de predicciones correctas (true positives + true
negatives) con respecto al número total de predicciones. En otras palabras, ¿qué
proporción de predicciones de diabetes acertó el modelo?
o Precision: la fracción de casos positivos identificados correctamente (el número de
true positives dividido por el número de true positives más false positives). En otras
palabras, de todos los pacientes que el modelo predijo que tenían diabetes, ¿cuántos
son realmente diabéticos?
o Recall: la fracción de los casos clasificados como positivos que en realidad son
positivos (el número de true positives dividido por el número de true positives más
false negatives). En otras palabras, de todos los pacientes que realmente tienen
diabetes, ¿cuántos identificó el modelo?
o F1 Score: una métrica general que esencialmente combina precisión y recall.
o AUC.
De estas métricas, accuracy es la más intuitiva. Sin embargo, debes tener cuidado al
utilizar solo accuracy como medida de qué tan bien funciona un modelo. Supongamos
que solo el 3% de la población es diabética. Podrías crear un modelo que siempre prediga
0 y sería 97% preciso, ¡pero no muy útil! Por esta razón, la mayoría de los científicos de
datos utilizan otras métricas como precisión y recall para evaluar el rendimiento del
modelo de clasificación.
9. Encima de la lista de métricas, hay un control deslizante Umbral (Threshold). Recuerda
que lo que predice un modelo de clasificación es la probabilidad de cada clase posible. En
el caso de este modelo de clasificación binaria, la probabilidad pronosticada para una
predicción positiva (diabética) es un valor entre 0 y 1.
Por defecto, una probabilidad pronosticada de diabetes por encima de 0.5 significa una
predicción de clase de 1, mientras que una predicción por debajo de este umbral implica
que hay una mayor probabilidad de que el paciente no tenga diabetes (las probabilidades
para todas las clases suman 1), por lo que la clase predicha sería 0.
Intenta mover el control deslizante del umbral y observa el efecto sobre la matriz de
confusión. Si lo mueves completamente hacia la izquierda (0), la métrica Recall se
convierte en 1, y si la mueve completamente hacia la derecha (1), la métrica Recall se
convierte en 0.
20. 10. Encima del control de Umbral se encuentra la curva ROC (ROC significa característica
del operador recibido, pero la mayoría de los científicos de datos simplemente lo llaman
curva ROC).
Otro término para recordar es True positive rate, y tiene una métrica correspondiente
llamada False positive rate, que mide el número de casos negativos incorrectamente
identificados como positivos en comparación con el número de casos negativos reales.
Al graficar estas métricas entre sí para cada valor umbral posible entre 0 y 1 se obtiene
una curva. En un modelo ideal, la curva iría hasta el lado izquierdo y hacia la parte
superior, de modo que cubra el área completa del gráfico. Cuanto mayor sea el área
debajo de la curva (que puede ser cualquier valor de 0 a 1), mejor será el rendimiento
del modelo: esta es la métrica de AUC enumerada con las otras métricas.
Para tener una idea de cómo esta área representa el rendimiento del modelo, imagine
una línea diagonal recta desde la parte inferior izquierda a la parte superior derecha del
gráfico ROC. Esto representa el rendimiento esperado si acaba de adivinar o lanzar una
moneda por cada paciente; puede esperar obtener aproximadamente la mitad de ellos
correctamente y la otra mitad incorrectos, por lo que el área debajo de la línea diagonal
representa un AUC de 0.5. Si el AUC para su modelo es más alto que esto para un modelo
de clasificación binaria, entonces el modelo funciona mejor que una suposición
aleatoria.
11. Cierra la ventana de visualización de resultados de Evaluate model.
El rendimiento de este modelo no es tan bueno, en parte porque solo realizamos una ingeniería
mínima de características y preprocesamiento. Podrías probar un algoritmo de clasificación
diferente, como el Two-Class Decision Forest, y comparar los resultados.
Puedes, por ejemplo, conectar las salidas del módulo Split Data a múltiples módulos Train
Model y Score Model, y luego conectar un segundo módulo Score Model al módulo Evaluate
Model para ver una comparación entre modelos.
El objetivo de este ejercicio es simplemente que conozcas la clasificación y la interfaz del
diseñador de Azure Machine Learning.
21. Unidad 7. Crea un pipeline de inferencia
Después de crear y ejecutar un pipeline para entrenar el modelo, necesitas un segundo pipeline
que realice las mismas transformaciones de datos para los nuevos datos, y luego use el modelo
entrenado para inferir (predecir) valores de etiquetas en función de sus características. Esta
canalización formará la base de un servicio predictivo que puede publicar para que las
aplicaciones lo utilicen.
Crea un pipeline de inferencia
1. En Azure Machine Learning Studio, haz clic en la página Designer para ver todos los
pipelines que has generado. Entonces, abre el pipeline Diabetes Training creado
previamente.
2. En la lista Create inference pipeline, haz clic en Real-time inference pipeline. Después
de unos segundos, una nueva version de tu pipeline llamado Diabetes Training-real time
inference se abrirá.
3. Renombra el nuevo pipeline a Predict Diabetes, y entonces revisa el nuevo pipeline.
Contiene una entrada de servicio web (web service input) para enviar nuevos datos y una
salida de servicio web (web service output) para devolver resultados. Algunas de las
transformaciones y pasos de entrenamiento se han encapsulado en este pipeline para que
las estadísticas de sus datos de entrenamiento se usen para normalizar los valores de datos
nuevos, y el modelo entrenado se usará para calificar los nuevos datos..
Nota
Si el nuevo pipeline no contiene módulos de entrada y salida de servicio web, regresa a la
página Designer y luego vuelve a abrir el nuevo pipeline de inferencia.
Realizará los siguientes cambios en el pipeline de inferencia:
22. • Reemplaza el dataset diabetes-data con un módulo Enter Data Manually que no incluya
la columna de etiqueta (Diabetic).
• Remueve el módulo Evaluate Model.
• Inserta un módulo Execute Python Script antes de la salida del web service que devuelva
solo el ID del paciente, el valor de la columna de predicción y la probabilidad.
Siga los pasos restantes a continuación, utilizando la imagen y la información de arriba como
referencia mientras modificas el pipeline.
4. El pipeline de inferencia supone que los nuevos datos coincidirán con el esquema de los
datos de entrenamiento originales, por lo que se incluye el dataset diabetes-data del
pipeline de entrenamiento. Sin embargo, estos datos de entrada también incluyen la
etiqueta Diabetic que predice el modelo, lo cual no es intuitivo incluir en los datos de
nuevos pacientes para los que aún no se ha realizado una predicción de diabetes. Elimina
este módulo y reemplázalo con un módulo Enter Data Manually de la sección Data Input
and Output, que debe contener los siguientes datos CSV, que incluyen valores de
características sin etiquetas para tres nuevas observaciones de pacientes:
PatientID,Pregnancies,PlasmaGlucose,DiastolicBloodPressure,TricepsThickness,Ser
umInsulin,BMI,DiabetesPedigree,Age
1882185,9,104,51,7,24,27.36983156,1.350472047,43
1662484,6,73,61,35,24,18.74367404,1.074147566,75
1228510,4,115,50,29,243,34.69215364,0.741159926,59
23. 5. Conecta el nuevo módulo Enter Data Manually a la misma entrada Dataset del
módulo Apply Transformation que el módulo Web Service Input.
6. El pipeline de inferencia incluye el módulo Evaluate Model, el cual no es útil al momento
de predecir nuevos datos, por lo que hay que removerlo.
7. La salida del módulo Score Model incluye todas las caraterísticas de entrada así como la
etiqueta de predicción y el score de probabilidad. Para limitar la salida solo a la predicción
y probabilidad:
o Elimina la conexión entre los módulos Score Model y Web Service Output.
o Agrega un módulo Execute Python Script de la sección Python Language,
reemplazando el código Python que aparece por defecto con el siguiente código (el
cual simplemente selecciona las columnas PatientID, Scored Labels y Scored
Probabilities, y además las renombra adecuadamente):
import pandas as pd
def azureml_main(dataframe1 = None, dataframe2 = None):
scored_results = dataframe1[['PatientID', 'Scored Labels', 'Scored
Probabilities']]
scored_results.rename(columns={'Scored Labels':'DiabetesPrediction',
'Scored Probabilities':'Probability'},
inplace=True)
return scored_results
o Connect the output from the Score Model module to the Dataset1 (left-most) input
of the Execute Python Script, and connect the output of the Execute Python
Script module to the Web Service Output.
8. Verifica que tu pipeline tenga un aspecto similar al mostrado:
24. 9. Ejecuta el pipeline como un nuevo experimento llamado predict-diabetes en tu clúster
de cómputo. ¡Esto puede tardar un rato!
10. Cuando finalice el pipeline, selecciona el módulo Execute Python Script y, en el panel
de configuración, en la pestaña Output + Logs, visualiza el Result dataset para ver las
etiquetas y probabilidades predichas para las tres observaciones del paciente en los datos
de entrada
Tu pipeline de inferencia predice si los pacientes están o no en riesgo de diabetes según sus
características. Ahora está listo para publicar el pipeline para que las aplicaciones cliente
puedan usarla.
25. Unidad 8. Implementa un servicio de
predicción
Una vez que hayas creado y probado un pipeline de inferencia para predicción en tiempo real,
puedes publicarla como un servicio para que las aplicaciones cliente las utilicen.
Para publicar un pipeline de inferencia en tiempo real como servicio, debes implementarla en
un clúster de Azure Kubernetes Service (AKS). En este ejercicio, utilizarás el clúster de
inferencia AKS que creaste anteriormente.
Implementa un servicio
1. Ve el pipeline de inferencia Predict Diabetes que creaste.
2. En la esquina superior derecha, selecciona Deploy y configura un nuevo endpoint en
tiempo real denominado predict-diabetes en el clúster de inferencia creado
anteriormente.
3. Espera a que se implemente el servicio web; esto puede llevar varios minutos. El estado
de implementación se muestra en la esquina superior izquierda de la interfaz del
diseñador.
Prueba el servicio
Ahora puedes probar tu servicio implementado desde una aplicación cliente; en este caso,
usarás el código de la celda mostrada a continuación para simular una aplicación cliente.
1. En la página Endpoints, abre el endpoint en tiempo real predict-diabetes.
2. Cuando se abra el endpoint predict-diabetes, ve la pestaña Consume y observa la
información siguiente, la cual necesitarás para realizar la conexión a tu servicio
implementado desde una aplicación cliente.
o El endpoint REST para tu servicio.
o La Primary Key de tu servicio
3. Puedes copiarlos usando el botón ⧉ al lado de estos valores.
4. Abre una nueva pestaña de navegador así como una segunda instancia de Azure Machine
Learning studio. Entonces, en la nueva pestaña, visita la página Notebooks.
26. 5. En la página Notebooks, crea un nuevo archivo con la siguiente configuración:
o Nombre de archivo: diabetes_test.ipynb
o Tipo de archivo: Notebook
o Sobreescribir si existe: Selected
o Selecciona el directorio de destino: Elige el folder de tu nombre de usuario bajo
User files
6. Cuando se haya creado el nuevo notebook, asegúrate de que la instancia de proceso
creada anteriormente esté seleccionada en la caja Compute y que tenga el estado
Running.
7. Edita el notebook directamente, y en la celda que ha sido creada pega el siguiente código:
endpoint = 'YOUR_ENDPOINT' #Replace with your endpoint
key = 'YOUR_KEY' #Replace with your key
import urllib.request
import json
import os
data = {
"Inputs": {
"WebServiceInput0":
[
{
'PatientID': 1882185,
'Pregnancies': 9,
'PlasmaGlucose': 104,
'DiastolicBloodPressure': 51,
'TricepsThickness': 7,
'SerumInsulin': 24,
'BMI': 27.36983156,
'DiabetesPedigree': 1.3504720469999998,
'Age': 43,
},
],
},
"GlobalParameters": {
}
}
body = str.encode(json.dumps(data))
headers = {'Content-Type':'application/json', 'Authorization':('Bearer '+ key)}
req = urllib.request.Request(endpoint, body, headers)
try:
response = urllib.request.urlopen(req)
result = response.read()
json_result = json.loads(result)
output = json_result["Results"]["WebServiceOutput0"][0]
27. print('Patient: {}nPrediction: {}nProbability:
{:.2f}'.format(output["PatientID"],
output["DiabetesPrediction"],
output["Probability"]))
except urllib.error.HTTPError as error:
print("The request failed with status code: " + str(error.code))
# Print the headers to help debug
print(error.info())
print(json.loads(error.read().decode("utf8", 'ignore')))
Nota
El código simplemente define los valores de las propiedades de un paciente, y utiliza el
servicio predict-diabetes recién creado para predecir un diagnóstico de diabetes.
8. Cambia a la pestaña del navegador que contiene la página Consume para el servicio
predict-diabetes y copie el endpoint REST de su servicio. Vuelve a la pestaña que
contiene el notebook y pega la clave en el código, reemplazando YOUR_ENDPOINT.
9. Repite el mismo proceso para copiar la Primary Key de tu service y reemplazar
YOUR_KEY por dicho valor.
10. Guarda el notebook. Entonces utiliza el botón ▷ que aparece al lado de la celda para
ejecutar el código.
11. Verifica que un diagnóstico de diabetes es devuelto.
28. Unidad 9. Verificación de conocimiento
1. Estás utilizando Azure Machine Learning Designer para crear un pipeline de entrenamiento
para un modelo de clasificación binaria. Has agregado un dataset que contiene características
y etiquetas, un módulo Two-Class Decision Forest y un módulo Training Model. Planeas usar
los módulos Score Model y Evaluation Model para probar el modelo entrenado con un
subconjunto del dataset que no se usó al inicio para el entrenamiento. ¿Qué tipo de módulo
adicional debe agregar?
A. Join Data
B. Split Data
C. Select Columns in Dataset
2. Utilizas un pipeline del Azure Machine Learning designer para entrenar y probar un modelo
de clasificación binaria. Revisas las métricas de rendimiento del modelo por medio del módulo
Evaluate model y observas que tiene un puntaje AUC de 0.3. ¿Qué puedes concluir sobre el
modelo?
A. El modelo puede explicar el 30% de la varianza entre etiquetas reales y las predichas.
B. El modelo predice con precisión el 70% de los casos de prueba.
C. El modelo funciona peor que adivinar al azar.
3. Usas Azure Machine Learning designer para crear un pipeline de entrenamiento para un
modelo de clasificación. ¿Qué debes hacer antes de implementar el modelo como servicio?
A. Crear una tubería de inferencia a partir del pipeline de entrenamiento
B. Agregar un módulo Evaluate model al pipeline de entrenamiento
C. Clonar el pipeline de entrenamiento con un nombre diferente
29. Unidad 10. Resumen
En este módulo, aprendiste a usar Azure Machine Learning designer para entrenar y publicar
un modelo de clasificación.
Restablecer recursos
El servicio web que creó está alojado en un clúster de Azure Kubernetes. Si no tienes intención
de experimentar más, debes eliminar el endpoint y el clúster para evitar que se acumulen cargos
innecesarios de Azure. También debes detener la instancia de cómputo hasta que la necesites
nuevamente.
Si has terminado de explorar Azure Machine Learning, puede eliminar el grupo de recursos
que contiene su espacio de trabajo de Azure Machine Learning de su suscripción de Azure:
1. En Azure Portal, en la página Grupos de recursos, abra el grupo de recursos que especificó
al crear su espacio de trabajo de Azure Machine Learning.
2. Haga clic en Eliminar grupo de recursos, escriba el nombre del grupo de recursos para
confirmar que desea eliminarlo y seleccione Eliminar.
1. En Azure Machine Learning Studio, en la pestaña Endpoints, elige el endpoint predict-
diabetes. Entonces, elige Delete (🗑) y confirma que deseas removerlo.
2. En la página Compute, en la pestaña Compute Instances, selecciona tu instancia de
cómputo y elige Stop.
3. En la página Compute, en la pestaña Compute clusters, abre tu clúster de your cómputo
y elige Edit. Entonces, establece la configuración Minimum number of nodes en 0 y
selecciona Update.
4. En la página Compute, en la pestaña Inference clusters, selecciona tu clúster de inferencia
y elige Delete, confirmando que deseas removerlo.
Si has terminado de explorer el servicio de Azure Machine Learning, puedes eliminar el grupo
de recursos que contiene tu Azure Machine Learning workspace en la suscripción de Azure:
1. En el Azure portal, dentro de la página Resource groups, abre el grupo de recursos que
especificaste al momento de crear el espacio de trabajo (workspace) de Azure Machine
Learning.
30. 2. Haz clic en Delete resource group, escribe el nombre del grupo de recurso para confirmar
la operación y haz clic en Delete.