Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
SE APLICA A:
SDK de Python azure-ai-ml v2 (actual)
En este tutorial, usted hará lo siguiente:
- Carga de datos en el almacenamiento en la nube
- Creación de un activo de datos de Azure Machine Learning
- Acceda a sus datos en un cuaderno para el desarrollo interactivo
- Creación de nuevas versiones de recursos de datos
Un proyecto de aprendizaje automático suele comenzar con un análisis exploratorio de datos (AED), el preprocesamiento de los datos (limpieza e ingeniería de características) y la elaboración de prototipos de modelos de aprendizaje automático para validar hipótesis. Esta fase de creación de prototipos del proyecto es muy interactiva por naturaleza y se presta al desarrollo en un IDE o un cuaderno de Jupyter Notebook con una consola interactiva de Python. En este tutorial se describen estos conceptos.
Requisitos previos
-
Para usar Azure Machine Learning, necesita un área de trabajo. Si no tiene una, complete Creación de los recursos necesarios para empezar a trabajar, para crear un área de trabajo y obtener más información sobre su uso.
Importante
Si su área de trabajo de Azure Machine Learning está configurada con una red virtual administrada, es posible que tenga que incluir reglas de salida para permitir el acceso a los repositorios públicos de paquetes de Python. Para obtener más información, consulte: Escenario: acceso a paquetes de aprendizaje automático públicos.
-
Inicie sesión en Studio y seleccione el área de trabajo si aún no está abierta.
-
Abra o cree una libreta en el área de trabajo:
- Si desea copiar y pegar código en celdas, cree un cuaderno nuevo.
- O, abra tutorials/get-started-notebooks/explore-data.ipynb de la sección Ejemplos de Studio A continuación, seleccione Clonar para agregar el cuaderno a sus Archivos. Para encontrar cuadernos de ejemplo, consulte Aprenda con cuadernos de ejemplo.
Elija el kernel y ábralo en Visual Studio Code (VS Code)
En la barra superior del cuaderno abierto, cree una instancia de proceso si aún no tiene una.
Si la instancia de proceso se detiene, seleccione Iniciar proceso y espere hasta que se ejecute.
Espere hasta que la instancia de proceso esté en ejecución. Luego, asegúrese de que el kernel, que se encuentra en la parte superior derecha, sea
Python 3.10 - SDK v2. Si no es así, use la lista desplegable para seleccionar este kernel.Si no ve el kernel, compruebe que la instancia de proceso se está ejecutando. Si es así, seleccione el botón Actualizar situado en la parte superior derecha del cuaderno.
Si ves un banner que dice que debes autenticarte, selecciona Autenticar.
Puede ejecutar el cuaderno aquí o abrirlo en VS Code para usar un entorno de desarrollo integrado (IDE) completo con las funcionalidades de los recursos de Azure Machine Learning. Seleccione Abrir en VS Code y después seleccione la opción web o de escritorio. Cuando se inicia de esta manera, VS Code se vincula a la instancia de proceso, el kernel y el sistema de archivos del área de trabajo.
Importante
El resto de este tutorial contiene celdas del cuaderno del tutorial. Cópielas y péguelas en el nuevo cuaderno o cambie al cuaderno ahora si lo ha clonado.
Descargar los datos que se usan en este tutorial
Para la ingesta de datos, Azure Data Explorer controla los datos sin procesar en estos formatos. En este tutorial se usa un ejemplo de datos de cliente de tarjeta de crédito con formato CSV. El procedimiento se realiza en un recurso de Azure Machine Learning. En ese recurso, creará una carpeta local con el nombre sugerido de datos, directamente en la carpeta donde se encuentra el cuaderno.
Nota:
Este tutorial depende de los datos colocados en una ubicación de carpeta de recursos de Azure Machine Learning. Para este tutorial, 'local' significa una ubicación de carpeta en ese recurso de Azure Machine Learning.
Seleccione Abrir terminal debajo de los tres puntos, como se muestra en esta imagen:
La ventana de terminal se abre en una nueva pestaña.
Cambie el directorio (
cd) a la misma carpeta donde se encuentra el cuaderno. Por ejemplo, si el cuaderno está en una carpeta llamada get-started-notebooks:cd get-started-notebooks # modify this to the path where your notebook is locatedEscriba estos comandos en la ventana de terminal para copiar los datos a la instancia de proceso:
mkdir data cd data # the subfolder where you'll store the data wget https://azuremlexamples.blob.core.windows.net/datasets/credit_card/default_of_credit_card_clients.csvAhora puede cerrar la ventana de terminal.
Para obtener más información sobre los datos en el repositorio de Machine Learning de UC Irvine, consulte este recurso.
Crear un identificador en el área de trabajo
Antes de explorar el código, necesita una manera de hacer referencia al área de trabajo. Se crea ml_client como identificador para el área de trabajo. Luego, se usa ml_client para administrar los recursos y trabajos.
En la celda siguiente, escriba el identificador de suscripción, el nombre del grupo de recursos y el nombre del área de trabajo. Para establecer estos valores:
- En la barra de herramientas en la parte superior derecha del estudio de Azure Machine Learning, seleccione el nombre de su área de trabajo.
- Copie el valor del área de trabajo, el grupo de recursos y el identificador de suscripción en el código.
- Debe copiar cada valor de uno en uno. Cierre el área, pegue el valor y siga con el siguiente.
from azure.ai.ml import MLClient
from azure.identity import DefaultAzureCredential
from azure.ai.ml.entities import Data
from azure.ai.ml.constants import AssetTypes
# authenticate
credential = DefaultAzureCredential()
# Get a handle to the workspace
ml_client = MLClient(
credential=credential,
subscription_id="<SUBSCRIPTION_ID>",
resource_group_name="<RESOURCE_GROUP>",
workspace_name="<AML_WORKSPACE_NAME>",
)
Nota:
La creación de MLClient no se conectará al área de trabajo. La inicialización del cliente es lenta y espera a la primera vez que necesite hacer una llamada. Esto pasa en la siguiente celda de código.
Cargar los datos en el almacenamiento en la nube
Azure Machine Learning usa identificadores de uniforme de recursos (URI), que apuntan a ubicaciones de almacenamiento en la nube. Un URI facilita el acceso a los datos en cuadernos y trabajos. Los formatos de URI de datos son similares a las direcciones URL web que se usan en el navegador para acceder a las páginas web. Por ejemplo:
- Accede a los datos desde un servidor público https:
https://<account_name>.blob.core.windows.net/<container_name>/<folder>/<file> - Acceso a datos desde Azure Data Lake Gen 2:
abfss://<file_system>@<account_name>.dfs.core.windows.net/<folder>/<file>
Un recurso de datos de Azure Machine Learning es similar a los marcadores del explorador web (favoritos). En lugar de recordar largas rutas de acceso de almacenamiento (URI) que apuntan a los datos usados con más frecuencia, puede crear un recurso de datos y, luego, acceder a ese recurso con un nombre descriptivo.
La creación de recursos de datos también crea una referencia a la ubicación del origen de dichos datos, junto con una copia de los metadatos. Dado que los datos permanecen en su ubicación existente, no incurre en ningún coste de almacenamiento adicional ni arriesga la integridad de las fuentes de datos. Puede crear recursos de datos a partir de almacenes de datos de Azure Machine Learning, Azure Storage, URL públicas y archivos locales.
Sugerencia
Para cargas de datos más pequeñas, funciona bien crear recursos de datos de Azure Machine Learning para cargar datos de recursos de máquina local en el almacenamiento en la nube. Este enfoque evita la necesidad de herramientas o utilidades adicionales. Sin embargo, para las cargas de datos más grandes se podría necesita una herramienta o utilidad específica, por ejemplo, azcopy. La herramienta de línea de comandos azcopy mueve datos hacia y desde Azure Storage. Para obtener más información sobre azcopy, consulte Introducción a AzCopy.
La siguiente celda del cuaderno crea el activo de datos. El ejemplo de código carga el archivo de datos sin procesar en el recurso de almacenamiento en la nube asignado.
Cada vez que cree un activo de datos, necesitará una versión única para él. Si la versión ya existe, le saldrá un error. En este código, se usa "initial" en la primera lectura de los datos. Si esa versión ya existe, el código no lo vuelve a crear.
También puede omitir el parámetro version. En este caso, se genera un número de versión automáticamente, empezando por 1 e incrementándose a partir de ahí.
En este tutorial se usa el nombre "initial" como primera versión. El tutorial Creación de canalizaciones de aprendizaje automático de producción también usa esta versión de los datos, por lo que usará un valor que verá de nuevo en ese tutorial.
from azure.ai.ml.entities import Data
from azure.ai.ml.constants import AssetTypes
# Update the 'my_path' variable to match the location of where you downloaded the data on your
# local filesystem
my_path = "./data/default_of_credit_card_clients.csv"
# Set the version number of the data asset
v1 = "initial"
my_data = Data(
name="credit-card",
version=v1,
description="Credit card data",
path=my_path,
type=AssetTypes.URI_FILE,
)
## Create data asset if it doesn't already exist:
try:
data_asset = ml_client.data.get(name="credit-card", version=v1)
print(
f"Data asset already exists. Name: {my_data.name}, version: {my_data.version}"
)
except:
ml_client.data.create_or_update(my_data)
print(f"Data asset created. Name: {my_data.name}, version: {my_data.version}")
Para examinar los datos cargados, seleccione Datos en la sección Recursos del menú de navegación izquierdo. Los datos se han cargado y se ha creado un recurso de datos:
Estos datos se denominan credit-card. En la pestaña Recursos de datos, podrá verlo en la columna Nombre.
Un almacén de datos de Azure Machine Learning es una referencia a una cuenta de almacenamiento existente en Azure. Un almacén de datos ofrece las siguientes ventajas
Una API común y fácil de usar para interactuar con diferentes tipos de almacenamiento:
- Azure Data Lake Storage
- Blob
- Archivos
y métodos de autenticación.
Una forma más fácil de descubrir almacenes de datos útiles, cuando se trabaja en equipo.
En sus scripts, una forma de ocultar la información de conexión para el acceso a datos basado en credenciales (service principal/SAS/key).
Acceso a los datos en un cuaderno
Quiere crear recursos de datos para los datos a los que se accede con frecuencia. Puede acceder a los datos mediante el URI tal como se describe en Acceso a datos desde un URI de almacén de datos como lo haría desde un sistema de archivos. Sin embargo, como se ha indicado anteriormente, puede resultar difícil recordar estos URI.
Hay una alternativa, que es usar la biblioteca azureml-fsspec, que ofrece una interfaz de sistema de archivos para almacenes de datos de Azure Machine Learning. Esta es una forma más fácil de acceder al archivo CSV en Pandas:
Importante
En una celda del cuaderno, ejecute este código para instalar la librería azureml-fsspec Python en el núcleo Jupyter:
%pip install -U azureml-fsspec
import pandas as pd
# Get a handle of the data asset and print the URI
data_asset = ml_client.data.get(name="credit-card", version=v1)
print(f"Data asset URI: {data_asset.path}")
# Read into pandas - note that you will see 2 headers in your data frame - that is ok, for now
df = pd.read_csv(data_asset.path)
df.head()
Para obtener más información sobre el acceso a datos en un cuaderno, consulte Acceso a datos a través del almacenamiento en la nube de Azure durante el desarrollo interactivo.
Creación de una nueva versión del recurso de datos
Los datos necesitan una limpieza ligera para prepararlos para entrenar un modelo de aprendizaje automático. Tiene:
- Dos encabezados
- Una columna de ID de cliente que no se usaría como característica en el aprendizaje automático
- Espacios en el nombre de la variable de respuesta
Además, en comparación con el formato CSV, el formato de archivo Parquet es un mejor medio de almacenar estos datos. Parquet permite la compresión y conserva el esquema. Cómo limpiar los datos y almacenarlos en formato Parquet:
# Read in data again, this time using the 2nd row as the header
df = pd.read_csv(data_asset.path, header=1)
# Rename column
df.rename(columns={"default payment next month": "default"}, inplace=True)
# Remove ID column
df.drop("ID", axis=1, inplace=True)
# Write file to filesystem
df.to_parquet("./data/cleaned-credit-card.parquet")
En esta tabla se refleja la estructura de los datos del archivo default_of_credit_card_clients.csv original descargado en un paso anterior. Los datos cargados contienen 23 variables explicativas y 1 variable de respuesta, como se muestra aquí:
| Nombres de columna | Tipo de variable | Descripción |
|---|---|---|
| X1 | Explicación | Importe del crédito concedido (en dólares NT): incluye tanto el crédito al consumo individual como su crédito familiar (complementario). |
| X2 | Explicación | Sexo (1 = masculino; 2 = femenino). |
| X3 | Explicación | Estudios (1 = postgrado; 2 = universidad; 3 = bachillerato; 4 = otros). |
| X4 | Explicación | Estado civil (1 = casado; 2 = soltero; 3 = otros). |
| X5 | Explicación | Edad (años). |
| X6-X11 | Explicación | Historial de pagos anteriores. Registros de pagos mensuales pasados de abril a septiembre de 2005. -1 = pago puntual; 1 = retraso en el pago de un mes; 2 = retraso en el pago de dos meses; . . .; 8 = retraso en el pago durante ocho meses; 9 = retraso en el pago durante nueve meses o más. |
| X12-17 | Explicación | Importe del extracto de cuenta (dólares NT) de abril a septiembre de 2005. |
| X18-23 | Explicación | Importe del pago anterior (NT dólar) de abril a septiembre de 2005. |
| Y | Respuesta | Pago predeterminado (Sí = 1, No = 0) |
Luego, cree una nueva version del recurso de datos. Los datos se cargan automáticamente en el almacenamiento en la nube. Para esta versión, añada un valor de hora para que cada vez que se ejecute este código, se cree un número de versión diferente.
from azure.ai.ml.entities import Data
from azure.ai.ml.constants import AssetTypes
import time
# Next, create a new version of the data asset (the data is automatically uploaded to cloud storage):
v2 = "cleaned" + time.strftime("%Y.%m.%d.%H%M%S", time.gmtime())
my_path = "./data/cleaned-credit-card.parquet"
# Define the data asset, and use tags to make it clear the asset can be used in training
my_data = Data(
name="credit-card",
version=v2,
description="Default of credit card clients data.",
tags={"training_data": "true", "format": "parquet"},
path=my_path,
type=AssetTypes.URI_FILE,
)
## Create the data asset
my_data = ml_client.data.create_or_update(my_data)
print(f"Data asset created. Name: {my_data.name}, version: {my_data.version}")
El archivo Parquet limpiado es la fuente de datos de la última versión. Este código muestra primero el conjunto de resultados de la versión CSV y después la versión Parquet:
import pandas as pd
# Get a handle of the data asset and print the URI
data_asset_v1 = ml_client.data.get(name="credit-card", version=v1)
data_asset_v2 = ml_client.data.get(name="credit-card", version=v2)
# Print the v1 data
print(f"V1 Data asset URI: {data_asset_v1.path}")
v1df = pd.read_csv(data_asset_v1.path)
print(v1df.head(5))
# Print the v2 data
print(
"_____________________________________________________________________________________________________________\n"
)
print(f"V2 Data asset URI: {data_asset_v2.path}")
v2df = pd.read_parquet(data_asset_v2.path)
print(v2df.head(5))
Limpieza de recursos
Si quiere continuar con otros tutoriales, ve a Pasos siguientes.
Detención de la instancia de proceso
Si no va a utilizar ahora la instancia de proceso, deténgala:
- En el estudio, en el panel izquierdo, seleccione Computación.
- En las pestañas superiores, seleccione Instancias de proceso.
- Seleccione la instancia de proceso en la lista.
- En la barra de herramientas superior, seleccione Detener.
Eliminación de todos los recursos
Importante
Los recursos que creó pueden usarse como requisitos previos para otros tutoriales y artículos de procedimientos de Azure Machine Learning.
Si no va a usar ninguno de los recursos que ha creado, elimínelos para no incurrir en cargos:
En Azure Portal, en el cuadro de búsqueda, escriba Grupos de recursos y luego selecciónelo en los resultados de la búsqueda.
En la lista, seleccione el grupo de recursos que creó.
En la página Información general, seleccione Eliminar grupo de recursos.
Escriba el nombre del grupo de recursos. A continuación, seleccione Eliminar.
Pasos siguientes
Para obtener más información sobre los recursos de datos, consulte Crear recursos de datos.
Para obtener más información sobre los almacenes de datos, consulte Crear almacenes de datos.
Vea el siguiente tutorial para saber cómo desarrollar un script de entrenamiento: