En el artículo anterior de esta serie, hablamos de la historia de la IA. También hemos hablado antes en detalle de las matrices. En este tercer artículo de la serie sobre IA, hablaremos de más operaciones matriciales. También nos familiarizaremos con algunas bibliotecas más de Python útiles para el desarrollo de la IA.
Antes de seguir adelante, vamos a discutir algunos términos significativos a menudo asociados con la IA y el aprendizaje automático. Las redes neuronales artificiales (a menudo llamadas redes neuronales o NN) son el núcleo del aprendizaje automático y el aprendizaje profundo. Pero, ¿qué son? Por definición, son modelos computacionales inspirados en las redes neuronales biológicas que forman los cerebros humanos. No voy a incluir aquí la imagen de una NN porque Internet hoy en día está repleta de ellas. Pero cualquier persona interesada en la IA seguro que ha visto una o más de esas imágenes, con una capa de entrada a la izquierda, una o más capas ocultas en el centro y una capa de salida a la derecha de la imagen. Una cosa importante que hay que entender es que los pesos de los bordes entre cada capa, mostrados en las imágenes que acabamos de mencionar, siguen cambiando con el entrenamiento. Esto conduce al éxito de las aplicaciones de aprendizaje automático y aprendizaje profundo.
Puede leer también | Cómo utilizar ChatGPT para la programación en Python
El aprendizaje supervisado y el aprendizaje no supervisado son dos modelos importantes de aprendizaje automático. A largo plazo, cualquier aspirante que quiera trabajar en el campo de la IA o el aprendizaje automático necesita aprender sobre estos modelos y las diferentes técnicas utilizadas para implementarlos. Por lo tanto, creo que es hora de que entendamos (informalmente) la diferencia entre estos dos modelos. Pensemos en dos personas llamadas A y B que deben clasificar manzanas y naranjas en dos grupos distintos. Nunca han visto manzanas ni naranjas. A ambos se les dan 100 fotos de manzanas y naranjas. Pero A tiene la información adicional de cuáles son manzanas y cuáles naranjas en las fotos dadas. A es como un algoritmo supervisado. B no tiene ninguna información adicional. Todo lo que tiene son las 100 fotos. B es como un algoritmo no supervisado. Un día ambos empiezan a clasificar. ¿Quién será mejor en su trabajo? La sabiduría convencional dice que A superará a B. Pero el aprendizaje automático dice que esto puede no ser así todo el tiempo. ¿Qué pasa si, de las 100 imágenes dadas a A, sólo 5 son de manzanas y el resto son todas naranjas? Puede que A no se familiarice en absoluto con las manzanas. ¿Y si alguien engaña intencionadamente a A cambiando algunas de las etiquetas de las fotos, de manzanas a naranjas y viceversa? En estos casos, B podría superar a A en el trabajo.
Puede leer también | Python 3.12: más rápido, más ágil, más preparado para el futuro
Pero, ¿puede ocurrir esto realmente en una aplicación de aprendizaje automático? Sí. Imagina una situación en la que estás entrenando tu modelo con un conjunto de datos inadecuados o corruptos. Ésta es sólo una de las muchas razones por las que ambos modelos de aprendizaje, supervisado y no supervisado, siguen prosperando en los campos de la IA y el aprendizaje automático. En los próximos artículos de esta serie, trataremos estos temas de manera más formal. Ahora vamos a aprender a utilizar JupyterLab, una herramienta muy potente disponible para el desarrollo de aplicaciones basadas en IA.
Puede leer también | Ciberatacantes piratean un proyecto de aprendizaje automático en Python
Introducción a JupyterLab
¿Qué es JupyterLab y cómo funciona?
JupyterLab es un entorno de desarrollo interactivo (IDE) de código abierto basado en la web que permite a los científicos de datos crear y compartir documentos que contienen código en vivo, ecuaciones, visualizaciones y texto narrativo. Es una evolución del Jupyter Notebook, ampliamente utilizado en la comunidad científica de datos. JupyterLab proporciona un entorno más flexible y potente para el análisis y la exploración de datos.
¿Qué es JupyterLab y cómo funciona?
JupyterLab es un entorno de desarrollo interactivo (IDE) de código abierto basado en la web que permite a los científicos de datos crear y compartir documentos que contienen código en vivo, ecuaciones, visualizaciones y texto narrativo. Es una evolución del Jupyter Notebook, ampliamente utilizado en la comunidad científica de datos. JupyterLab proporciona un entorno más flexible y potente para el análisis y la exploración de datos.
En esta entrada del blog, exploraremos las características de JupyterLab y cómo funciona.
Características de JupyterLab
JupyterLab tiene varias características que lo convierten en una poderosa herramienta para los científicos de datos. Estas son algunas de las características clave:
Interfaz de múltiples documentos (MDI)
JupyterLab tiene una interfaz de múltiples documentos (MDI) que permite a los usuarios trabajar en varios cuadernos, archivos de texto y otros documentos al mismo tiempo. Esta característica es particularmente útil para los científicos de datos que necesitan trabajar en múltiples proyectos simultáneamente.
Interfaz de cuaderno
JupyterLab tiene una interfaz de cuaderno que permite a los usuarios crear y editar cuadernos. Los cuadernos son documentos que contienen código en vivo, ecuaciones, visualizaciones y texto narrativo. Los cuadernos se utilizan ampliamente en la comunidad científica de datos para el análisis y la exploración de datos.
Editor de código
JupyterLab tiene un editor de código que permite a los usuarios escribir y editar código. El editor de código soporta múltiples lenguajes, incluyendo Python, R y Julia. El editor de código ofrece funciones como resaltado de sintaxis, completado de código y comprobación de errores.
Terminal
JupyterLab tiene un terminal que permite a los usuarios ejecutar comandos de línea de comandos. El terminal proporciona una interfaz de línea de comandos (CLI) para los usuarios que prefieren trabajar con herramientas de línea de comandos.
Navegador de archivos
JupyterLab tiene un navegador de archivos que permite a los usuarios navegar y gestionar archivos y directorios. El navegador de archivos proporciona una interfaz gráfica de usuario (GUI) para los usuarios que prefieren trabajar con archivos y directorios.
Extensiones
JupyterLab tiene una arquitectura modular que permite a los usuarios ampliar su funcionalidad con extensiones. Las extensiones son paquetes que añaden nuevas características a JupyterLab. Hay varias extensiones disponibles para JupyterLab, incluyendo un depurador, un inspector de variables y una tabla de contenidos.
Cómo funciona JupyterLab
JupyterLab es una aplicación basada en web que se ejecuta en un navegador web. Cuando un usuario abre JupyterLab, se inicia un servidor web en el ordenador del usuario. El navegador web del usuario se conecta al servidor web, y JupyterLab se carga en el navegador.
JupyterLab utiliza una arquitectura cliente-servidor. El cliente es el navegador web, y el servidor es la aplicación JupyterLab. El cliente envía peticiones al servidor, y el servidor responde con datos. El cliente y el servidor se comunican mediante un protocolo llamado protocolo Jupyter.
JupyterLab utiliza kernels para ejecutar código. Los kernels son procesos independientes que ejecutan código y se comunican con JupyterLab. Cuando un usuario ejecuta código en un cuaderno, el código se envía al kernel para su ejecución. El kernel devuelve el resultado a JupyterLab, que lo muestra en el cuaderno.
JupyterLab también admite el control de versiones. Los usuarios pueden guardar su trabajo en un sistema de control de versiones como Git. JupyterLab proporciona integración con Git, permitiendo a los usuarios confirmar y enviar cambios directamente desde JupyterLab.
JupyterLab es una potente herramienta para los científicos de datos. Su interfaz de múltiples documentos, su interfaz de cuaderno, su editor de código, su terminal, su navegador de archivos y sus extensiones lo convierten en un entorno flexible y potente para el análisis y la exploración de datos. La arquitectura cliente-servidor de JupyterLab y el uso de kernels la convierten en una herramienta escalable y eficiente para trabajar con datos. Con JupyterLab, los científicos de datos pueden crear y compartir documentos que contienen código en vivo, ecuaciones, visualizaciones y texto narrativo.
Instalación
JupyterLab se puede instalar usando conda
, mamba
, o .pip
pipenv
docker
Advertencia
Las nuevas versiones de JupyterLab pueden romper la compatibilidad con versiones anteriores con extensiones y otras personalizaciones de Jupyter. Como se indica en Compatibilidad con versiones anteriores, versiones y cambios importantes , los ciclos de desarrollo y lanzamiento de JupyterLab siguen versiones semánticas, por lo que recomendamos planificar sus procedimientos de instalación y actualización para tener en cuenta posibles cambios importantes que pueden interrumpir el uso de JupyterLab y cualquier herramienta relacionada que sea fundamental para sus flujos de trabajo.
conda
Si usa conda
, puede instalarlo con:
conda install -c conda-forge jupyterlab
mamba
Si usa mamba
, puede instalarlo con:
mamba install -c conda-forge jupyterlab
pipa
Si usa pip
, puede instalarlo con:
pip install jupyterlab
Si está utilizando una versión de macOS que viene con Python 2, ejecute pip3
en lugar de pip
.
Si instala usando , debe agregar el directorio de nivel de usuario a su variable de entorno para iniciar . Si está utilizando un derivado de Unix (FreeBSD, GNU/Linux, macOS), puede hacerlo ejecutando .pip install --user
bin
PATH
jupyter lab
export PATH="$HOME/.local/bin:$PATH"
canalización
Si usa pipenv
, puede instalarlo como:
pipenv install jupyterlab
pipenv shell
o desde un git checkout:
pipenv install git+git://github.com/jupyterlab/jupyterlab.git#egg=jupyterlab
pipenv shell
Al usar pipenv
, para iniciar , debe activar el virtualenv del proyecto. Por ejemplo, en el directorio donde 's y live (es decir, donde ejecutó los comandos anteriores):jupyter lab
pipenv
Pipfile
Pipfile.lock
pipenv shell
jupyter lab
Alternativamente, puede ejecutar dentro de virtualenv conjupyter lab
pipenv run jupyter lab
ventana acoplable
Si tiene Docker instalado , puede instalar y usar JupyterLab seleccionando una de las muchas imágenes de Docker listas para ejecutar que mantiene el equipo de Jupyter. Siga las instrucciones de la Guía de inicio rápido para implementar la imagen de Docker elegida.
Asegúrese de que su comando docker incluya la marca para asegurarse de que JupyterLab esté habilitado en su contenedor.-e JUPYTER_ENABLE_LAB=yes
Uso con JupyterHub
Lea los detalles en nuestra página de documentación de JupyterLab en JupyterHub .
Navegadores compatibles
Actualmente se sabe que funcionan las últimas versiones de los siguientes navegadores:
-
Firefox
-
Cromo
-
Safari
Las versiones anteriores del navegador también pueden funcionar, pero no ofrecen garantías.
JupyterLab usa variables CSS para diseñar, que es una de las razones de las versiones mínimas enumeradas anteriormente. IE 11+ o Edge 14 no son compatibles con las variables CSS y no son compatibles directamente en este momento. Se puede usar una herramienta como postcssjupyterlab/build
para convertir los archivos CSS en el directorio manualmente si lo desea.
Problemas de instalación
Si su computadora está detrás de un servidor de seguridad o un proxy corporativo, es posible que encuentre errores de HTTP y SSL debido a que el servidor de seguridad o el servidor de seguridad bloquean las conexiones a los servidores más utilizados. Por ejemplo, es posible que vea este error si conda no puede conectarse a sus propios repositorios:
CondaHTTPError: HTTP 000 CONNECTION FAILED for url <https://repo.anaconda.com/pkgs/main/win-64/current_repodata.json>
Estos son algunos sitios ampliamente utilizados que alojan paquetes en los ecosistemas de código abierto de Python y JavaScript. Su administrador de red puede permitir conexiones http y https a estos dominios:
-
pypi.org
-
pythonhosted.org
-
continuo.io
-
anaconda.com
-
conda.io
-
github.com
-
githubusercontent.com
-
npmjs.com
-
hilopkg.com
Alternativamente, puede especificar un usuario proxy (generalmente un usuario de dominio con contraseña), que puede comunicarse a través de la red. Esto se puede lograr fácilmente configurando dos variables de entorno comunes: HTTP_PROXY
y HTTPS_PROXY
. Muchas herramientas de código abierto (como ) utilizan automáticamente estas variables conda
si se configuran correctamente.
# For Windows
set HTTP_PROXY=http://USER:Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.:PORT
set HTTPS_PROXY=https://USER:Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.:PORT
# For Linux / MacOS
export HTTP_PROXY=http://USER:Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.:PORT
export HTTPS_PROXY=https://USER:Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.:PORT
En caso de que pueda comunicarse a través de HTTP, pero la instalación conda
falla debido a problemas de conectividad con los servidores HTTPS, puede desactivar el uso de SSL para conda
.
Advertencia
Por lo general, no se recomienda deshabilitar SSL en la comunicación e implica riesgos potenciales de seguridad.
# Configure npm to not use SSL
conda config --set ssl_verify False
Puedes hacer algo similar para pip
. El enfoque aquí es marcar los servidores de repositorio como hosts confiables, lo que significa que no se requerirá comunicación SSL para descargar bibliotecas de Python.
# Install pandas (without SSL)
pip install --trusted-host pypi.org --trusted-host files.pythonhosted.org pandas
Usando los consejos anteriores, puede manejar muchos problemas de red relacionados con la instalación de bibliotecas de Python.
Muchas extensiones de Jupyter requieren que funcionen los comandos npm
y jlpm
(alias de yarn
), que son necesarios para descargar extensiones útiles de Jupyter u otras dependencias de JavaScript. Si npm
no puede conectarse a sus propios repositorios, es posible que vea un error como:
ValueError: "@jupyterlab/toc" is not a valid npm package
Puede configurar el proxy o registro utilizado para npm con los siguientes comandos.
# Set proxy for NPM
npm config set proxy http://USER:Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.:PORT
npm config set proxy https://USER:Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.:PORT
# Set default registry for NPM (optional, useful in case if common JavaScript libs cannot be found)
npm config set registry http://registry.npmjs.org/
jlpm config set registry https://registry.yarnpkg.com/
En caso de que pueda comunicarse a través de HTTP, pero la instalación npm
falla debido a problemas de conectividad con los servidores HTTPS, puede desactivar el uso de SSL para npm
.
Advertencia
Por lo general, no se recomienda deshabilitar SSL en la comunicación e implica un riesgo potencial de seguridad.
# Configure npm to not use SSL
npm set strict-ssl False