Como instalar y visualizar Jupyter Notebook en servidor Debian 11
Un entorno informático interactivo basado en la web para crear documentos de Jupyter Notebook. En nuestro caso vamos con un como instalar y visualizar Jupyter Notebook en servidor Debian 11. Con Jupyter Notebook podemos programar y visualizar en el mismo tiempo directamente desde el navegador web.
Primer paso actualizar e instalar Python.
Para actualizar nuestro sistema Debian11 usamos el siguiente comando:
# apt update && apt upgrade -y

Una vez actualizado instalamos Python y Pip:
# apt install python

Después procedemos con la instalación de pip:
# apt install python3-pip

Ahora solo nos falta instalar notebook en las dependencias del usuario.
# pip install notebook

Instalamos y la extensión de visualizar el resultado «voila».
# pip install voila

Ejecutamos desde el directorio de usuario.
$ jupyter notebook

Y se nos abre el navegador

Por defecto se nos abre en localhost, pero si queremos abrirlo en por medio de un servidor, podemos redireccionarlo en la IP y el puerto que nosotros queremos.
El comando es el siguiente:
$ jupyter notebook --ip=192.168.230.133 --port=8888

Para crear y ejecutar nuestro primer comando vamos al botón new y elegimos Python3.

Se abre en una nueva pestaña

Donde colocamos nuestro código y ejecutamos con el botón run.

la lineal de código en si es lo mas simple, mostrar el famoso Hola Mundo
print ("Hola Mundo")
También podemos visualizar la salida con voila.

El notebook se puede ejecutar también como root, pero no es recomendable. Si de todos modos queréis hacerlo este es el comando:
# jupyter notebook --allow-root
Si ejecutamos Jupyter Notebook en un servidor y accedemos con un dominio, es mejor añadir una contraseña para el acceso con el siguiente comando:
$ jupyter notebook password

Aquí os dejo algunas librerías de Python para Machine Learning e Inteligencia Artificial
La instalación de las librerías se hace por medio de pip, de la siguiente manera:
& pip install numpy
Librerías de Python para Cálculo Numérico y Análisis de Datos
NumPy

NumPy proporciona una estructura de datos universal que posibilita el análisis de datos y el intercambio de datos entre distintos algoritmos. Las estructuras de datos que implementa son vectores multidimensionales y matrices con capacidad para gran cantidad de datos.
Además, esta librería proporciona funciones matemáticas de alto nivel que operan en estas estructuras de datos. Para aprender más, sigue el tutorial de NumPy (en inglés).
SciPy
SciPy proporciona rutinas numéricas eficientes fáciles de usar y opera en las mismas estructuras de datos proporcionadas por NumPy. Por ejemplo, con SciPy puedes realizar: integración numérica, optimización, interpolación, transformadas de Fourier, álgebra lineal, estadística, etc. Para aprender más, sigue el tutorial de SciPy (en inglés).
Pandas

Pandas es una de las librerías de python más útiles para los científicos de datos. Las estructuras de datos principales en pandas son Series para datos en una dimensión y DataFrame para datos en dos dimensiones.
Estas son las estructuras de datos más usadas en muchos campos tales como finanzas, estadística, ciencias sociales y muchas áreas de ingeniería. Pandas destaca por lo fácil y flexible que hace la manipulación de datos y el análisis de datos.
Para aprender más, puedes mirar la documentación de pandas (en inglés).
Numba

Numba traduce funciones escritas en python to código máquina optimizado a la hora de ejecutarse. Lo consigue usando el estándar industrial LLVM como librería de compilación. Los algoritmos numéricos compilados con Numba pueden alcanzar velocidades de ejecución tan altas como las de C o FORTRAN.
Así que si te interesa optimizar la velocidad de tu código, no tienes por qué compilar código por separado, ni tan siquiera necesitas tener el compilador de C/C++ instalado. Sólo aplica uno de los decoradores de Numba a tu función de python y Numba hará el resto.
Para saber más, puedes consultar la documentación de Numba (en inglés)
Librerías de Python para Machine Learning
En las fases del proceso de Machine Learning, ya existen librerías de aprendizaje automático. Hay varias librerías y Scikit-Learn es la más utilizada.
scikit-learn

scikit-learn es una librería de python para Machine Learning y Análisis de Datos. Está basada en NumPy, SciPy y Matplotlib. La ventajas principales de scikit-learn son su facilidad de uso y la gran cantidad de técnicas de aprendizaje automático que implementa.
Con scikit-learn podemos realizar aprendizaje supervisado y no supervisado. Podemos usarlo para resolver problemas tanto de clasificación y como de regresión.
El interfaz scikit-learn es muy fácil de aprender. Te das cuenta que el interfaz es consistente cuando puedes cambiar de técnica de machine learning cambiando sólo una línea de código.
Otro punto a favor de scikit-learn es que los valores de los hiper-parámetros tienen unos valores por defecto adecuados para la mayoría de los casos.
Estas son algunas de las técnicas de aprendizaje automático que podemos usar con scikit-learn:
- regresión lineal y polinómica
- regresión logística
- máquinas de vectores de soporte
- árboles de decisión
- bosques aleatorios (random forests)
- agrupamiento (clustering)
- modelos basados en instancias
- clasificadores bayesianos
- reducción de dimensionalidad
- detección de anomalías
- etc.
Para aprender más, puedes mirar la documentación de scikit-learn (en inglés).
Librerías de Python para Deep Learning
Aunque el Deep Learning se engloba dentro del Machine Learning, he puesto las librerías de python para aprendizaje profundo al mismo nivel. La razón es que últimamente, el deep learning es el mayor responsable de la reciente popularidad del machine learning.
TensorFlow

TensorFlow es una librería de python, desarrollada por Google, para realizar cálculos numéricos mediante diagramas de flujo de datos. Esto puede chocar un poco al principio, porque en vez de codificar un programa, codificaremos un grafo. Los nodos de este grafo serán operaciones matemáticas y las aristas representan los tensores (matrices de datos multidimensionales).
Con esta computación basada en grafos, TensorFlow puede usarse para deep learning y otras aplicaciones de cálculo científico.
Si te estás preguntando por qué necesitamos diseñar un grafo en vez de un programa, es por la flexibilidad de ejecución que TensorFlow permite. Por ejemplo, el grafo que representa la red neuronal profunda y sus datos, se podrá ejecutar en una o varias CPU o GPU en un PC, en un servidor o en un móvil.
Para aprender más, puedes mirar el tutorial de TensorFlow (en inglés).
Keras

Keras es un interfaz de alto nivel para trabajar con redes neuronales. El interfaz de Keras es mucho más fácil de usar que el de TensorFlow. Esta facilidad de uso es su principal característica.
Con Keras es muy fácil comprobar si nuestras ideas tendrán buenos resultados rápidamente. Keras utiliza otras librerías de deep learning (TensorFlow, CNTK o Theano) de forma transparente para hacer el trabajo que le digamos.
Para aprender más, puedes mirar la documentación de Keras (en inglés).
PyTorch

PyTorch es una librería de python, desarrollada por Facebook, que permite el cálculo numérico eficiente en CPU y GPUs.
Puedes pensar en PyTorch como una librería que te la las capacidades de NumPy en una GPU. En otras palabras, si tu tarjeta gráfica tiene un procesador gráfico (por ejemplo, una NVIDIA moderna), tu código se puede ejecutar unas ¡10 – 20 veces más rápido!
El aprendizaje profundo (deep learning) usa cálculos matriciales y de derivadas masivos y paralelizables en GPUs. Por eso, PyTorch también se especializa en deep learning.
Para aprender más, puedes mirar los tutoriales de PyTorch y su documentación (ambos en inglés).
Librerías de Python para IA explicable
SHAP

SHAP es una librería para realizar Inteligencia Artificial Explicable (XAI por sus siglas in inglés eXplainable Artificial Intelligence). Utiliza cálculos del campo de la teoría de juegos para averiguar qué variables tienen más influencia en las predicciones de las técnicas de machine learning.
SHAP permite entender cómo se toman las decisiones en modelos de caja negra (random forest o redes neuronales). Puedes obtener explicaciones tanto para predicciones individuales como de forma global. Su API es bastante fácil de usar.
Librerías de Python para Procesamiento de Lenguaje Natural
Algunas de las librerías que hemos visto se pueden usar también para algunas de las fases del procesamiento del lenguaje natural. Por ejemplo, scikit-learn puede usarse para calcular frecuencias normalizadas de los términos que aparece en documentos.
Las librerías de deep learning y scikit-learn también permiten construir modelos de machine learning con datos de texto, una vez estos se hayan convertido a un formato estándar.
En este apartado, vamos a ver las librerías que están principalmente dedicadas al procesamiento del lenguaje natural.
NLTK: Natural Language Toolkit
NLTK es una de las librerías más antiguas en python para procesamiento de lenguaje natural. Sigue siendo muy útil para tareas de preprocesado de texto tales como la tokenización, lematización, exclusión de palabras irrelevantes, etc. NLTK también se usa mucho como herramienta de estudio y enseñanza de procesamiento del lenguaje.
Para aprender más, puedes leer el libro de NLTK (en inglés).
gensim

gensim es una librería para el procesamiento de lenguaje natural creada por Radim Řehůřek. El punto fuerte de Gensim es el modelado de temas. Es decir, puede identificar automáticamente de que tratan un conjunto de documentos.
Además, Gensim es útil para construir o importar representaciones de vectores distribuidas tales como word2vec. También podemos usar Gensim para analizar la similaridad entre documentos, lo que es muy útil cuando realizamos búsquedas.
Para aprender más, mira los tutoriales de Gensim (en inglés).
spaCy

spaCy es la librería de procesamiento natural más rápida que existe. Está diseñada para usarse en aplicaciones reales y extraer información relevante. spaCy también es muy útil para preparar texto para otras tareas de aprendizaje automático. Por ejemplo, podemos preparar los datos para usarlos con TensorFlow, PyTorch, scikit-learn, Gensim, etc.
Con spaCy también vamos a poder construir modelos lingüísticos estadísticos sofisticados para muchos de los problemas de procesamiento de lenguaje natural.
Para saber más, mira la documentación de spaCy (en inglés).