Al ejecutar una aplicación a través de la línea de comandos, muchas veces no somos conscientes de la enorme cantidad de opciones o parámetros que esta puede admitir. A menudo esto se debe a que prácticamente siempre utilizamos esa aplicación o ese comando de la misma manera (por ejemplo en el caso del cat de UNIX), pero si hacemos el ejercicio de repetir la invocación acompañada de –help (o a veces -h), veremos que normalmente los comandos van acompañados de su buena ristra de opciones.

docopt_1 lenguaje de programación python

A tener en cuenta

Cuando somos meramente usuarios el problema se limita a que tenemos que dedicarle un tiempo a leer y entender la documentación para ver las opciones disponibles. ¿Qué ocurre cuando somos nosotros los que tenemos que desarrollar una aplicación que tenga que recibir una cantidad determinada de parámetros? Existen dos principios básicos a tener en cuenta:

La librería argparse es una de las más utilizadas para abordar esta tarea y ofrece un abanico muy amplio de posibilidades. Hoy vamos a presentar otra librería, quizá menos conocida pero más intuitiva, que es docopt. En docopt, nosotros solamente tenemos que pensar la clásica descripción de uso (Usage) que encontramos en la mayoría de los comandos o programas. Una vez hayamos definido las distintas modalidades de uso, escribiremos el bloque de texto resultante como un comentario multilínea Python (entre triples comillas dobles). Vamos a ilustrar esto con un sencillo ejemplo. Supongamos que estamos haciendo una calculadora básica en Python capaz de sumar, restar, multiplicar, dividir, hacer potencias y raíces cuadradas.

Ejemplo de usage

Nuestro Usage podría ser algo así:

docopt_2 lenguaje de programación python

Esto es todo lo que necesita docopt para parsear por nosotros los argumentos con los que puede funcionar nuestra aplicación. Como veis, no se puede decir aún que hayamos tirado una sola línea de código :). Ahora sí vamos a meter algo de código (aunque solo sea importar la librería e invocar al método que hará la magia):

docopt_3 lenguaje de programación python

A partir de esto, ya podemos probar a ejecutar el código, lo hemos llamado metido en un fichero que hemos llamado calculator.py.

Ahora pueden ocurrir tres cosas:

La primera (y más habitual) es que el usuario que ejecute por primera vez la aplicación vaya a ciegas y no la invoque como nosotros esperamos, por ejemplo con un simple python calculator.py:

docopt_4 lenguaje de programación python

Vemos cómo, automáticamente, se nos muestra cuáles son las posibles formas de uso de calculator.py. La segunda es que nuestro usuario pruebe a utilizar el típico parámetro -h o –help para informarse de las modalidades de ejecución:

docopt_5 lenguaje de programación python

Obteniendo también el resultado deseado (podemos probar también con –version para ver cómo nos informa de la versión de nuestra aplicación, esto es posible gracias a que hemos rellenado el parámetro correspondiente al invocar el método docopt). Finalmente la tercera es que nuestro usuario sepa cómo ejecutar la aplicación, en este caso docopt almacenará por nosotros todos los posibles parámetros en un diccionario de Python (fijaos que anteriormente añadimos un print(arguments) para poder ver cómo docopt ha dispuesto nuestros argumentos en un diccionario)

docopt_6 lenguaje de programación python

A partir de aquí ya es nuestra labor hacer lo que queramos con los argumentos, referenciándolos como cualquier elemento de un diccionario, por ejemplo:

docopt_7 lenguaje de programación python

Conclusión

Esto es solo una muestra de las opciones que nos ofrece docopt para construir nuestro Usage (realmente soporta las definidas en el estándar IEEE Std 1003.1 más conocido como POSIX). Si queréis probarlo, bastará con que lo instaléis mediante pip install docopt en vuestro entorno (está probado desde la versión de Python 2.6 a la 3.5). ¡Feliz parseo!

MÁSTER EXPERTO EN BIG DATA & ANALYTICS

Gracias al Master en Big Data Analytics 100% Online tendrás amplios conocimientos sobre las herramientas y técnicas analíticas necesarias para la modelización de los principales retos de negocio, con el fin de mejorar la toma de decisiones a través de los datos y el conocimiento.

En el primer artículo de la serie vimos cómo aproximarnos a las distribuciones de probabilidad en la Computación Clásica. En el segundo, comenzamos a asomarnos de forma superficial a la Computación Cuántica introduciendo conceptos como qubit, base canónica, superposición, regla de Born y los circuitos cuánticos con Qiskit de python. En el tercero hablamos de la Esfera Bloch, la superposición y cómo construir un circuito cuántico.

En el cuarto artículo de esta serie se introdujeron conceptos como superposición e interferencia y cómo codificarlos empleando Qiskit. Ahora es turno de ver cómo representar varios qubits y de adentrarnos en la propiedad conocida como entanglement.

Múltiples qubits

En este punto vamos a empezar a trabajar con estados cuánticos formados por varios qubits. Si recordamos lo que vimos anteriormente, un estado cuántico lo podemos asemejar a una distribución de probabilidad y un qubit es un estado cuántico de 2 niveles [a0, a1],  de forma que podemos representar un estado cuántico mediante un vector columnar.

Para hacer referencia a su label (el nombre de dicho estado) se utilizará lo que se denomina ket en la notación Dirac, es decir, podemos referirnos a nuestro estado cuántico mediante el ket . Para continuar refrescando conceptos previos, estas distribuciones de probabilidad deberán tener norma 1 en la norma L2.

Por tanto recapitulando, podemos escribir un qubit de la siguiente forma:

Introducción a la Computación Cuántica con Qiskit

Donde a0 y a1 reciben el nombre de amplitudes de probabilidad y son números complejos, por lo que no solo estaremos restringidos al cuadrante positivo del plano como ocurría con las distribuciones de probabilidad clásica, cuya norma debe ser igual a 1 en la norma L1 y además cada probabilidad debía ser mayor o igual a 0 (lo que únicamente permitía representaciones en el cuadrante positivo citado anteriormente).

Como en computación cuántica el requisito de normalización debe ser la norma L2 eso puede formalizarse para el caso de un qubit en que:

Introducción a la Computación Cuántica con Qiskit

Podemos encontrar 2 qubits especiales llamados vectores de base canónica en 2 dimensiones que son:

Introducción a la Computación Cuántica con Qiskit

La parte interesante es que podemos expandir cualquier qubit en esta base de la siguiente forma dando lugar al fenómeno de superposición:

Introducción a la Computación Cuántica con Qiskit

Según la regla de Born, si extraemos una muestra del qubit |(|) > obtendremos la salida 0 con una probabilidad |a0|2 y la salida 1 con una probabilidad de |a1|2.

Producto Kronecker

Una vez finalizado este repaso, toca ponernos manos a la obra con nuevos conceptos. Vamos a comprobar cómo añadir más qubits nos permite introducir otro fenómeno cuántico.

En este punto nos puede surgir la duda sobre cómo representar en forma de vector columnar 2 qubits. La forma de hacerlo es empleando la operación de producto de tensores o producto Kronecker. Para entenderlo vamos a ver un ejemplo en el que partimos de 2 qubits: |(|) > y |(|)` > :

Introducción a la Computación Cuántica con Qiskit

El producto de tensores o producto Kronecker de esos 2 qubits será:

Introducción a la Computación Cuántica con Qiskit

Vamos a concretar un poco más. Supongamos que tenemos almacenado en el registro cuántico qr0 un qubit que está en el estado |0> y también disponemos de otro registro cuántico llamado qr1 que de forma similar al anterior almacena un qubit en el estado |0>. Una forma de visualizar la regla del producto Kronecker de esos 2 qubits (|0> ⊕ |0>) sería mediante el siguiente código:

Introducción a la Computación Cuántica con Qiskit

El estado resultante del producto Kronecker de esos dos qubits que cada uno de ellos se encuentra en el estado |0> se suele representar como |00>. Si quisiéramos representar los estados |01>, |10> y |11> tendríamos que seguir el mismo procedimiento que hemos realizado para generar el ket |00>.

Hay que señalar que los estados |00>, |01>, |10> y |11> forman los vectores de base canónica en un espacio de números complejos de 4 dimensiones denotado como:

Introducción a la Computación Cuántica con Qiskit

Conclusión

Cuando empleamos modelos de Machine Learning y Deep Learning también trabajamos con espacios de alta dimensionalidad pero no se construyen como un producto de tensores sino que suele tratarse de Rn, es decir, un mapeo a los números reales para alguna dimensión ‘n’.

El efecto de construir espacios de alta dimensionalidad empleando producto de tensores es que no todos los vectores de dicho espacio pueden ser escritos como el producto de vectores de los elementos de ese espacio. Este hecho que en principio puede parecer confuso, nos permitirá descubrir la propiedad cuántica conocida como entanglement, que recorreremos en el siguiente artículo viendo cómo la podemos observar empleando Qiskit.  ¡No te lo pierdas!


MÁSTER EXPERTO EN BIG DATA & ANALYTICS

Gracias al Master en Big Data Analytics 100% Online tendrás amplios conocimientos sobre las herramientas y técnicas analíticas necesarias para la modelización de los principales retos de negocio, con el fin de mejorar la toma de decisiones a través de los datos y el conocimiento.

Dentro del mundo del Data Science, existen iniciativas muy interesantes, y una de las que más no puede interesar, además de todos las opciones formativas y herramientas disponibles, son los Google Colab.

Colab es un servicio cloud, basado en los Notebooks de Jupyter, que permite el uso gratuito de las GPUs y TPUs de Google, con librerías como: Scikit-learn, PyTorch, TensorFlow, Keras y OpenCV. Todo ello con bajo Python 2.7 y 3.6, que aún no está disponible para R y Scala.

Aunque tiene algunas limitaciones, que pueden consultarse en su página de FAQ, es una herramienta ideal, no solo para practicar y mejorar nuestros conocimientos en técnicas y herramientas de Data Science, sino también para el para el desarrollo de aplicaciones (pilotos) de machine learning y deep learning, sin tener que invertir en recursos hardware o del Cloud.

Con Colab se pueden crear notebooks o importar los que ya tengamos creados, además de compartirlos y exportarlos cuando queramos. Esta fluidez a la hora de manejar la información también es aplicable a las fuentes de datos que usemos en nuestros proyectos (notebooks), de modo que podremos trabajar con información contenida en nuestro propio Google Drive, unidad de almacenamiento local, github e incluso en otros sistemas de almacenamiento cloud, como el S3 de Amazon.

Empezando a trabajar con Colab

Para poder tener nuestro espacio de trabajo en Colab, tendremos que tener una cuenta de google y acceder al servicio de Google Drive. Una vez dentro, le daremos a Nuevo > Carpeta, poniéndole el nombre que consideremos, por ejemplo: “MisColabs”.

introducción google colab data science

Para crear nuestro primer Colab, entraremos dentro de la carpeta que hemos creado y daremos a Nuevo > Más > Colaboratory,  a continuación se abrirá un nuevo notebook.

introducción google colab data science

Otra opción sería ir directamente a Google Colab.

Lo siguiente sería cambiar el nombre del notebook, haciendo clic en el nombre del notebook (esquina superior-izquierda) o yendo al menú Archivo > Cambiar nombre.

introducción google colab data science

Una vez hecho esto, hay que establecer el entorno de ejecución: menú Entorno de ejecucción > Cambiar tipo de entorno de ejecucción, tras lo que se abrirá la siguiente ventana:

introducción google colab data science

En la mismo indicaremos las versión de Python ( 2 ó 3)  y la unidad de procesamiento que se usará para ejecutar el código del Notebook: CPU (None), GPU ó TPU.

Cargando los datos

A la hora cargar los datos, que se usarán en el notebook, existen varias opciones, pero aquí veremos tres:

Para montar y habilitar el acceso a nuestro Google Drive, ejecutaremos el siguiente código:

from google.colab import drive

drive.mount('/content/gdrive')

Al hacer esto, nos pedirá un código de autorización y la url donde podemos conseguirlo. Al hacer clic en dicha url, nos llevará al proceso de validación de nuestra cuenta de Google y luego nos mostrará el código de acceso que tenemos que copiar y pegar, en el sitio correspondiente. A continuación hay que dar a Enter.

introducción google colab data science

Tras hacerlo, lo validará y montará nuestro google drive en el notebook, apareciendo el siguiente mensaje: “Mounted at /content/gdrive”.

introducción google colab data science

Para verlo, tendremos que hacer clic en la flecha que esta en el margen superior izquierdo e ir a la pestaña de archivos. En el veremos dos carpetas: sample_data (datos de ejemplo) y gdrive (nuestro google drive).

introducción google colab data science

Si lo que queremos es traernos los datos de una fuente externa, por ejemplo, una instancia S3 de Amazon, podremos hacerlo haciendo uso de comandos como: !wget y !unzip. Tal y como se muestra a continuación:

!wget -cq https://s3.amazonaws.com/content.udacity-data.com/courses/nd188/flower_data.zip

!unzip -qq flower_data.zip

Al ejecutar estás dos sentencias, el dataset flower_data, se cargará y estará disponible en nuestro notebook, podremos verlo en la pestaña de archivo.

introducción google colab data science

Por último, si queremos cargar datos que tenemos en nuestro disco local, podremos hacerlo siguiendo los siguientes pasos:

1.- Dar al botón subir, que esta en el margen superior izquierdo de la pestaña de archivos.

introducción google colab data science

2.- Buscamos el archivo que queremos subir, en mi caso el archivo winequality.csv que tengo el directorio ./Descargas/data, de mi disco duro local.

introducción google colab data science

3.- Cuando le damos a abrir, nos aparecerá un mensaje de advertencia, diciendo que los datos se borrarán al finalizar la sesión, lógico al tratarse de un servicio gratuito. Simplemente es algo que tendremos que tener en cuenta a la hora de usar este servicio. Una opción sería guardar nuestros datos en Google Drive y evitar que se borren cuando cerremos nuestra sesión de Colab.

introducción google colab data science

4.- El archivo que hemos cargado, aparecerá en la pestaña de Archivos.

introducción google colab data science

Operaciones básicas

Con los archivos cargados,  podremos realizar una operativa similar a la que haríamos desde una consola de linux. Se usan los mismos comandos, pero poniendo el símbolo de admiración delante. Así, podremos:

A continuación pongo un par de imágenes con algunos ejemplos, pero si queréis probar vosotros mismos, cosa que recomiendo, os dejo un enlace al notebook donde he ido haciendo todo esto

Nota: El archivo winequality.csv, lo podéis descargar desde el siguiente enlace.

introducción google colab data science

Y hasta aquí esta introducción a los Google Colab, en la próxima entrega veremos como instalar librerías de Python, para luego usarlas en la construcción y entrenamiento de un modelo de clasificación.

Saludos a tod@s y ¡a seguir a tope con vuestros proyectos!.

MÁSTER EXPERTO EN BIG DATA & ANALYTICS

Gracias al Master en Big Data Analytics 100% Online tendrás amplios conocimientos sobre las herramientas y técnicas analíticas necesarias para la modelización de los principales retos de negocio, con el fin de mejorar la toma de decisiones a través de los datos y el conocimiento.

Datahack Sur, en Sevilla, se centra ahora en Python. La sede andaluza sigue avanzando en su afán de traer formación de Big Data y Analytics de calidad. Y en este tercer evento, tras hablar de Machine Learning y Blockchain en las otras ediciones, ahora le tocaba al Análisis de Datos usando una de las herramientas más empleadas por los profesionales, el lenguaje de programación Python.

La mejor formación en Big Data y asequible para todos.

Esta charla cerraba el círculo con la primera de Machine Learning, pues como se nos recalcaba, no es posible dar ese paso sin haber realizado antes un exhaustivo Análisis de los Datos. Se dividió en dos partes, una primera más teórica sobre los pasos para ese análisis y los fundamentos de Python como herramienta para realizarlo. Y una segunda en la que se hizo un ejercicio sobre unos datos reales para reforzar lo explicado antes, y ver el potencial de este lenguaje.

Proceso de Ciencia de Datos

Tras el índice, fue lo primero que se presentó. El marco completo del proceso que lleva a cabo un científico de datos, desde el origen de éstos hasta la solución final que se le dé al problema que se quiere resolver, pasando por las etapas de Extracción, Procesado, Limpieza, EDA (Análisis Exploratorio de datos o como se conoce en inglés: Exploratory Data Analysis), Machine Learning e Implantación.

Se recalcó con insistencia en que lo que hay que tener presente en todo momento, y por su puesto bien definido, es el problema que se quiere resolver. Esta concreción del problema nos ayudará a enfocar cada una de las etapas del proceso, especialmente en la etapa del EDA.

Y respecto al EDA, en la presentación se nos recordaba que el término fue acuñado por el conocido estadístico John Tukey en 1977, y lo definía como “una actitud, un estado de flexibilidad, una voluntad de buscar aquellas cosas que creemos que no están allí, también aquellas que creemos que sí están”.

Después de explicar los pasos habituales que se hacen en este EDA, que es la base del Análisis de los Datos, y recordándonos también que el EDA es algo que se hace en paralelo con las otras etapas de procesado de la información, se pasó a hablar de la herramienta Python.

Python, herramienta extendida para el Análisis de Datos

Asentada la base del Análisis de los Datos, ahora tocaba ver cómo se hacía. Y en esta ocasión se aborda usando el lenguaje de programación Python, lenguaje interpretado creado en 1989 por Guido Van Rossum. Está claro, ¿no? Desde siempre se está haciendo un guiño al grupo británico de humor “Monty Python” a la hora de elegir el nombre.

Lo primero que se habló es el porqué de su popularidad, destacándose que tenía una comunidad que lo soportaba muy grande, que está esponsorizado por Google y Facebook entre otros. Y, además, que tenía Big Data, 140000 librerías y que además era eficiente, fiable y abierto. ¡ Qué más se puede pedir !

Las librerías imprescindibles de Python

Y sin más, se pasó a describir las librerías más importantes para el análisis de datos: numpy, pandas, matplotlib y seaborn.

Numpy es la base, la librería para los cálculos rápidos, usando la vectorización, o lo que es lo mismo, operaciones entre vectores evitando usar bucles “for”. Y ahí se aprovechó para recordarnos el evitar usar bucles “for” cuando se manejan grandes volúmenes de datos.

El hecho de que la librería numpy esté pensada para manejar grandes volúmenes de datos, esté realizada en C, y tenga un esquema optimizado de memoria, independiente del resto de objetos de Python, es la que la hacen tan importante.

Para facilitar el uso de todas las funciones de esta librería, se explicó que es recomendable tener una “chuleta” a mano siempre.

A continuación, se pasó a hablar de la librería más importante del proceso de Ciencia de Datos, pandas, que usando como base la anterior librería con potencial de cálculos muy rápidos, une la posibilidad de manipular datos estructurados (Dataframes y Series) con funciones muy parecidas a las que se usan en las bases de datos (SQL).

Por supuesto, pandas también tiene “chuleta”, no podía ser menos.

La visualización

Pero parece que no es suficiente con estas dos librerías, y se nos insistía bastante, la visualización es muy importante en el proceso que se explicaba al principio de la presentación. En ese descubrimiento de lo que no creemos que está en los datos, como decía Tukey, aflora cuando hacemos una buena visualización. Y para ello se nos recomendaban dos librerías, matplotlib y seaborn.

Matplotlib es la librería por excelencia de visualización de gráficas en 2D, con la que se puede visualizar prácticamente todo lo que se nos ocurra. Para ayudarnos a elegir cómo visualizar, una recomendación era que se acudiera a la galería de ejemplos que contiene tantos, que seguro nos encauza para crear nuestra gráfica. Siempre contaremos con la “chuleta”.

Y para terminar con la visualización, se habló de la segunda librería, seaborn. Permite hacer gráficos más estadísticos y con un lenguaje de alto nivel. Esta librería, que usa de base la anterior, trata de sacar a la luz las relaciones entre variables, y para que no se nos olvide ninguna función, tendremos a mano la “chuleta” también.

Finalmente, antes de ver un ejemplo práctico, se nos recordaba cuáles eran las plataformas más empleadas para usar Python: Anaconda como “distribución del software”, Spyder como entorno de desarrollo, Jupyter como aplicación web para poder compartir código y contar historias sobre los datos, sin olvidar un buen editor Notepad++

Ejemplo de Análisis de Datos: estudio de mercado de torres eléctricas a partir de datos de aduanas

La segunda parte de la conferencia se basaba en la ejecución de código en Python usando un notebook de Jupyter, para repasar todo lo comentado hasta ahora, ya con datos reales.

Aunque el ejemplo se hacía sobre unos datos que no se pueden llamar calificar como Big Data, sólo contaban con algo más de 1500 observaciones y unas 100 características, lo que se vio es aplicable a un dataset de dimensiones miles de veces mayor, los conceptos son los mismos.

Y en referencia al Big Data, en la presentación se nos daba una definición curiosa del término: “Big Data es lo que no cabe en una Excel”. Curiosa definición, pero lo cierto es que muchos empezaron a usar Python como herramienta de análisis de datos, en el momento que Excel dejó de dar solución por el volumen de los datos.

Ejecutando código en Python

Sin más se entró a ir ejecutando el código, siguiendo los pasos del Proceso de Ciencia de Datos, empezando por la extracción de los datos, que en este caso fue una carga de un archivo en formato csv. Siguieron etapas de procesado (rellenado de missing, extracción de características con expresiones regulares, conversión de tipos de variables) y de limpieza.

Además de los datos de aduanas, se incorporaron datos para hacer un análisis más amplio, como los precios históricos de las materias primas principales, el acero y el zinc.

Vimos una librería muy interesante que realizar rápido y de forma detallada un EDA a partir de un dataframe de pandas, y lleva por nombre pandas-profiling.

Finalmente, como no podía ser menos, se realizaron varias visualizaciones, para tratar de entender el mercado de torres eléctricas en el país, viendo cómo han ido evolucionando las operaciones a lo largo de los años, quiénes han exportado, qué volúmenes y a qué precio. Ahí vimos el potencial de visualización tanto de matplotlib y seaborn.

Conclusión

Pasada la hora y cuarto de la presentación, hemos visto condensada esta actividad del Análisis de Datos, importante paso previo al uso de herramientas más avanzadas en Ciencia de Datos como el Machine Learning. Y vimos también su potencial, en el sencillo ejemplo a partir de datos de aduanas y precios históricos de materia prima.

Durante la ronda de preguntas, el numeroso público mostró mucho interés en el asunto, sacando a relucir temas como la arquitectura necesaria para hacer esto a gran escala y velocidad, o el uso de las GPU para la analítica, interés en las empresas por personas con perfiles que sean capaces de hacer estos análisis de datos, y otras preguntas interesantes.

Como en otras ocasiones, un asistente habitual a este ciclo de conferencias sobre Big Data, hizo su magnífica crónica del evento.

En breve estará disponible el vídeo de la presentación, de momento podemos descargarnos en github la presentación, el notebook de Jupyter, los datos para ejecutarlo y las chuletas (“cheat sheets”) de las librerías.

MÁSTER EXPERTO EN BIG DATA & ANALYTICS

Gracias al Master en Big Data Analytics 100% Online tendrás amplios conocimientos sobre las herramientas y técnicas analíticas necesarias para la modelización de los principales retos de negocio, con el fin de mejorar la toma de decisiones a través de los datos y el conocimiento.

Qué es Python

Es un lenguaje de programación de código abierto. Su filosofía es que su sintaxis favorezca la legibilidad. También la favorece el hecho de que el contenido de los bloques de código está delimitado mediante indentación (espacios o tabuladores). Esto hace que sea simple, versátil y de desarrollo rápido.

Otras de sus características:

Qué podemos hacer con Python:

Con este lenguaje de programación podemos crear todo tipo de programas: desde software para aplicaciones científicas o comunicaciones de red hasta juegos y apps. También se utiliza mucho en el mundo del Big Data & Analytics para extracción de datos, visualización de los mismos, estadística avanzada y el uso del machine learning sobre esas estructuras para mecanizar tareas analíticas, entre muchos otros usos.

MÁSTER EXPERTO EN BIG DATA & ANALYTICS

Gracias al Master en Big Data Analytics 100% Online tendrás amplios conocimientos sobre las herramientas y técnicas analíticas necesarias para la modelización de los principales retos de negocio, con el fin de mejorar la toma de decisiones a través de los datos y el conocimiento.

chevron-down