Temática

Empleabilidad

Tiempo de lectura

5 minutos

Clave de contenido del artículo

Todos sabemos que las principales competencias técnicas demandadas en las vacantes del sector de Big Data son:

  • Lenguajes de Programación
  • Aprendizaje Automático, IA y Procesamiento del Lenguaje Natural (NPL)
  • Análisis cuantitativo
  • Minería de Datos
  • Resolución de problemas
  • Bases de Datos SQL y NoSQL
  • Estructura de Datos y Algoritmos
  • Interpretación y Visualización de Datos

Paloma Romero

EMEA Talent and Culture Lead

Autora del artículo

En un mercado laboral tan competitivo como el actual, es importante que los que buscan empleo en Big Data tengan una idea clara de lo que las empresas buscan.

Un informe del Boston Consulting Group sitúa a España como el octavo país "más atractivo" del mundo para el traslado de trabajadores tecnológicos, por detrás de Francia y Suiza. Esto lo facilita la alta calidad de vida en España y nuestra cultura.

Asimismo, en España, el 70% de los trabajadores tecnológicos son hombres, y sólo el 30% mujeres. Algunas instituciones, como la Universidad de Granada, están desarrollando iniciativas para eliminar esta brecha, pero todavía hay que trabajar mucho para lograr un equilibrio.

Prioridades en la demanda del sector Big Data según publica en varias entrevistas el MIT

Jonathan Lowe, Jefe de Ciencia de Datos en Pfizer

Jonathan Lowe aclara que a veces hacemos excepciones y contratamos sin tener todas las habilidades, y nos fijamos en la experiencia en el negocio, "Si alguien dice: 'He trabajado en un laboratorio de calidad durante la mitad de mi carrera y ahora, durante los últimos años, he estado aprendiendo más ciencia de datos', nosotros engulliremos a esas personas".

Yichen Sun, Directora de Ciencia de Datos en Netflix

Por otro lado, según Yichen Sun, "necesitamos a alguien que tenga principios y sea práctico a la vez, que haga las concesiones adecuadas y que sea capaz de articular el 'por qué' de esas decisiones técnicas".

Cerrar la brecha entre el negocio y los datos de una empresa son las principales prioridades, haciendo hincapié en la importancia de traducir con precisión la información obtenida de los datos en estrategias empresariales viables.

Por ello, las funciones actuales centradas en los datos también requieren curiosidad, lo que contribuye a una mentalidad innovadora y orientada a la resolución de problemas. Aunque un experto en datos con una solución en busca de un problema no es algo que rompa el trato, Sun dijo que intentará entrenar a la persona para que entienda que su solución puede ser la aplicación correcta para un problema, pero que puede haber una forma "aún más elegante o incluso más simple de hacerlo".

En relación con esto, Sun también busca a "alguien que sea más reflexivo, que sea capaz de recibir esta retroalimentación de una manera muy productiva y ser adaptable en términos de qué enfoque utiliza."

Nadine Kawkabani, Global Business Strategy Director en  MFS Investment Management

Por último, Nadine Kawkabani declara que la necesidad de competencias interpersonales son ejemplos de cómo han cambiado los puestos de trabajo relacionados con los datos y el análisis, y la cultura asociada. Ya no se trata de trabajar con datos; se trata de garantizar que los datos tengan sentido y que las personas que los manejan entiendan también cómo influyen en la estrategia de la empresa.

"Todos dependemos de todos", afirma Kawkabani. "Puedo plantear la mejor estrategia, pero si no tengo buenos datos, buenos gráficos, datos precisos y datos oportunos e interpretables, no significan nada".

Conclusiones

Tras estas opiniones podemos entonces concluir que en un mercado laboral tan competitivo como el actual, las empresas buscan a los mejores y para ello no solo hay que ser “excelente” en datos, hay que ser también excelente en:

Cualquier empresario buscará a la persona que genere mayor valor añadido a su negocio, que aumente la calidad de lo que hace o que sea capaz de ir más allá de lo esperado… esto es escalable a cualquier sector y a cualquier área, no solo a las relacionadas con los datos. Esto nos lleva a que debemos ser los mejores a nivel técnico y a nivel competencial

Por otro lado, un informe del Boston Consulting Group sitúa a España como el octavo país "más atractivo" del mundo para el traslado de trabajadores tecnológicos, por detrás de Francia y Suiza. Claramente, la alta calidad de vida en España y nuestra cultura facilitan esta posición.

Desafortunadamente sigue existiendo diferencia de género en España, ya que como se ha explicado anteriormente, el 70% de los trabajadores tecnológicos son hombres. Sólo el 30% son mujeres.

Según IESE, a pesar de las elevadas tasas de desempleo juvenil en España, el 75% de las empresas encuestadas afirma estar encontrando importantes dificultades para contratar talento con las competencias adecuadas para cubrir sus necesidades.

Además, el 76% de las empresas señalan una brecha de competencias entre lo que necesitan sus organizaciones y la formación ofrecida por el sistema universitario. Al mismo tiempo, el 79% de las empresas señalan una brecha de competencias en los candidatos con formación profesional.

En las grandes empresas encuestadas se espera que el teletrabajo represente casi el 40% de las horas de trabajo en 2025. Frente a esto, las habilidades de liderazgo de los directivos cobrarán mayor relevancia (según el 88% de las empresas). El resto de la plantilla deberá mostrar más capacidad de aprendizaje y de trabajo en equipo (según el 60% y el 59% de las empresas, respectivamente), entre otras habilidades.

Finalmente, ya que hablamos de la empleabilidad hablemos también de los salarios tomando varias fuentes:

Temática

Python

Tiempo de lectura

5 minutos

Clave de contenido del artículo

Luis ha decidido ser Data Scientist. Desde hace tiempo lleva dándole vueltas a dedicarse a la inteligencia artificial, pero no sabe por dónde empezar. Tras consultar en Google y a ChatGPT qué herramientas son las más adecuadas para iniciarse, concluye que desde hace tiempo hay dos lenguajes de programación más utilizados en este mundo: R y Python. Luis decide dejar de lado debates eternos y decide aprender los dos, porque ¿existe acaso incompatibilidad? Tira una moneda al aire y el resultado es empezar por Python.

De Python no sabía mucho, más allá de que es un lenguaje de programación. Buceando un poco, llega a definiciones del tipo: “Se trata de un lenguaje de programación multiparadigma, ya que soporta parcialmente la orientación a objetos, programación imperativa y, en menor medida, programación funcional. Es un lenguaje interpretado, dinámico y multiplataforma.”

Santiago Moreno

Senior Data Scientist y profesor de Python y machine learning en datahack

Autor del artículo

En resumen, Python sirve para todo, desde modelos de machine learning hasta para desarrollar YouTube. Para esto, Luis ve que Python se apoya en múltiples módulos, paquetes o “librerías”, “libraries” en inglés que son una ayuda para cada uno de los aspectos que se pueden utilizar con Python. En concreto para IA hay varias indispensables: Pandas, numpy, scikit learn, Keras, Matplotlib, Seaborn…. y unas cuantas más.

Por tanto, no basta con descargarse Python, sino que hay después que instalar múltiples bibliotecas o “librerías” para poder trabajar y, lo que es más complicado: cada librería depende a su vez de otras, lo cual hace que pueda haber incompatibilidad de versiones... y ¿cómo solucionar todo este lío? Cuando está a punto de tirar la toalla, Luis descubre Anaconda.

Anaconda es una distribución de Python (también de R), es decir, en lugar de instalar Python simplemente te instalas Anaconda y con ella ya tienes las principales herramientas Open Source que el Data Scientist necesita para desarrollar su actividad.

¿Cómo instalar Anaconda Python?

Instalar Anaconda es muy fácil; viene ya preparado para descargar el instalador según el sistema operativo que se quiera utilizar e instalarlo:

Haz clic aquí.

Cómo trabajar con Anaconda: Jupyter Notebook y Spyder

La instalación de Anaconda viene directamente con Jupyter Notebook como herramienta de notebooks y de Spyder como IDE de programación.

El Notebook es una herramienta muy habitual en el trabajo habitual del científico de datos. En su propia web se define como “Jupyter Notebook es una interfaz web de código abierto que permite la inclusión de texto, vídeo, audio, imágenes así como la ejecución de código a través del navegador en múltiples lenguajes. Esta ejecución se realiza mediante la comunicación con un núcleo (Kernel) de cálculo.”

Haz clic aquí.

Precisamente esa capacidad de poder incluir código junto con imágenes y texto es lo que hace particularmente adecuado para el análisis de datos, pues te permite llevar un hilo argumental a medida que se va llevando a cabo el estudio, los modelos, extrayendo las métricas, etc.

Sin embargo, los notebooks tienen una importante limitación: no permiten de modo fácil la productivización de los distintos algoritmos. Para esto es mejor recurrir a lo que se conoce como un IDE, es decir, un entorno para desarrollo integrado. Anaconda viene integrado con Spyder para lo que es la parte más de desarrollo y menos de análisis.

Haz clic aquí.

Entorno de Python en Anaconda

Una de las particularidades de Python como lenguaje Open Source es su continua evolución que puede hacer que desarrollos pasados que utilizaban ciertas versiones sean incompatibles con versiones más modernas. No solo casos ya extremos como una aplicación desarrollada con Python 2 que no funcione en Python 3, sino incluso métodos de librerías como pandas que se modifican o dependencias que cambian al actualizar las versiones.

Los entornos de Anaconda precisamente permiten manejar este tipo de situaciones. Un entorno de Anaconda se puede entender como un espacio aislado, independiente, donde las librerías y versión de Python se mantienen congeladas. Así, si tenemos un desarrollo muy importante que queremos seguir manteniendo con una combinación de versiones de librerías, lo ideal es tenerlo de modo estático o perenne en uno de estos entornos de anaconda.

Una de las recomendaciones a la hora de abordar proyectos es, precisamente, tener un entorno base con la instalación de Anaconda o incluso Miniconda (ya veremos la diferencia) y a partir de ahí, que cuelguen los diferentes entornos con las librerías requeridas para cada caso.

Los comandos más habituales para trabajar con entornos son:

Instalación de librerías en Anaconda: Conda

Conda no es lo mismo que Anaconda: Conda es un gestor de paquetes, mientras que Anaconda es una distribución que, además de Python, incluye las librerías más habituales para el día a día del análisis de datos. Esto se traduce en que es Conda quien se va a encargar de manejar las distintas dependencias entre librerías de las que ya hemos hablado.

En resumen, es quien se va a ocupar cuando queramos actualizar una librería o instalar una nueva de que todo marche bien. La ventaja de habernos instalado Anaconda es que Conda viene integrado.

¿Esto significa que sin Conda no podríamos instalar nuevas librerías? No. Python incorpora un comando, Pip, que precisamente sirve para instalar nuevos módulos. Tanto Conda como Pip son válidos para instalar librerías, si bien, siempre que se pueda recurrir a Conda, merece la pena utilizarlo.

Por tanto, siempre que se quiera instalar una librería, podemos seguir los siguientes pasos que se van a ilustrar con un ejemplo. Supongamos que se desea instalar una librería que no viene por defecto con Anaconda, como puede ser Swifter. 

En este caso, bastaría con ejecutarlo en la línea de comandos de Anaconda:

Basta escribir “pip install swifter” en la línea de comandos:

Conclusión

El mundo de la Inteligencia Artificial y de la ciencia y análisis de datos está muy ligado a Python y esto implica, necesariamente, adaptarse a las particularidades de este mundo. Anaconda viene tanto a solucionar la entrada a los que se inicien en este apasionante mundo como a ser una herramienta imprescindible en el día a día para los científicos de datos más experimentados gestionando por nosotros entornos, librerías o paquetes etc. Desde luego, es una solución muy recomendable para el día a día del análisis de datos.

Si te ha gustado este artículo...

Conoce ahora nuestro

Máster Experto en Data Science y Big Data

¡Infórmate ya!

Temática

Big Data

Tiempo de lectura

3 minutos

Claves de contenido del artículo

¿Qué es el Big Data?

Aplicaciones

Formación

Salidas profesionales

El futuro del Big Data

El Big Data es uno de los temas más relevantes en el ámbito tecnológico en la actualidad. Este término se refiere a la gran cantidad de datos que se generan a diario y que son analizados para extraer información valiosa, mediante el uso de tecnologías que permiten su gestión y análisis de forma masiva. Los datos provienen de diversas fuentes, como las redes sociales, los dispositivos móviles, los sensores, entre otros. La capacidad de procesar y analizar esta información, en muchos casos en tiempo real, es lo que hace que el Big Data sea tan importante actualmente.

En este artículo Alejandro Vaca (Data Scientist en Instituto de Ingeniería del Conocimiento (IIC)) nos va a hablar sobre la importancia del Big Data y su recorrido hasta el día de hoy.

El impacto del Big Data en nuestras vidas es innegable. Muchas de las aplicaciones que utilizamos en nuestro día a día, desde redes sociales hasta aplicaciones de transporte o compras en línea, se basan en el análisis de grandes cantidades de datos para personalizar su oferta y mejorar la experiencia del usuario. Por ejemplo, cuando utilizamos una aplicación de transporte, el Big Data se utiliza para analizar las rutas más eficientes y predecir el tiempo de llegada con precisión.

Otro ejemplo es el sector de la salud, donde el análisis de datos masivos permite a los profesionales médicos personalizar los tratamientos y las intervenciones para cada paciente, lo que se traduce en mejores resultados y una mayor eficacia. También es posible detectar patrones y tendencias en el comportamiento de los pacientes, lo que puede ayudar a prevenir enfermedades y mejorar la atención médica.

Formarse en el ámbito del Big Data es fundamental para poder aprovechar al máximo su potencial. Actualmente existen numerosos cursos, grados, diplomas y programas de postgrado enfocados en el análisis de datos masivos, lo que permite a los profesionales adquirir habilidades y conocimientos específicos para trabajar en este campo. Es importante mencionar que el Big Data no sólo requiere habilidades técnicas, sino también habilidades de análisis y pensamiento crítico para poder extraer información valiosa de los datos. Un centro de excelencia en este sentido es Datahack, un centro de formación especializado en el ámbito del Big Data y el Data Science.

El campo del Big Data ofrece múltiples salidas profesionales, ya que es una herramienta fundamental en diversos ámbitos, como la salud, el comercio electrónico, la seguridad, la educación, entre otros. En el comercio electrónico, el Big Data se utiliza para analizar el comportamiento de los consumidores y personalizar las recomendaciones de productos y servicios. En la seguridad, el Big Data se utiliza para analizar grandes cantidades de información de seguridad y predecir posibles amenazas y riesgos. En la educación, el Big Data se utiliza para analizar los resultados de los estudiantes y personalizar la enseñanza para adaptarse a las necesidades de cada uno.

La importancia del Big Data continuará creciendo en el futuro próximo. Cada vez se generan más datos y se espera que en los próximos años se produzca un aumento exponencial en la cantidad de información que se recopila. Además, la capacidad de analizar y procesar grandes cantidades de datos se está volviendo cada vez más importante en el mundo empresarial y gubernamental. Por lo tanto, es fundamental que los profesionales se formen en el campo del Big Data, pues el impacto y la presencia de estas tecnologías en la vida de las personas irá en aumento.

En conclusión, el Big Data es un tema de gran relevancia en la actualidad y su importancia continuará creciendo en el futuro. Formarse en este ámbito ofrece numerosas oportunidades profesionales y permite aprovechar al máximo su potencial para mejorar diversas áreas de la sociedad. Además, el Big Data tiene un impacto directo en nuestras vidas y en la forma en que interactuamos con el mundo que nos rodea. Desde las aplicaciones móviles hasta la atención médica personalizada, el análisis de grandes cantidades de datos nos permite tomar mejores decisiones y mejorar nuestra calidad de vida.

 Alejandro Vaca (Data Scientist en Instituto de Ingeniería del Conocimiento (IIC))

 linkedin.com/in/alejandro-vaca-serrano/

Atrévete a formarte con nuestro Máster Experto en Data Science y Big Data

Una formación 100% online y adaptada a ti para que te conviertas en un especialista en Inteligencia de Negocio

¡Si te ha gustado el contenido de este artículo no te olvides de suscribirte a la newsletter!

Por Marta Regina Cano Jiménez

La nuestra es la era de los datos. Cada día se generan inmensas cantidades de datos y tanto la infrastructura para almacenarlos, como las herramientas y técnicas para tratar y analizar este volumen tan ingente de información, evoluciona a pasos agigantados.

Pero los datos no van solos y se ha demostrado que los proyectos más exitosos son aquellos que entienden las necesidades de las personas y se adaptan de forma personalizada. El futuro, por tanto, es impulsado por las personas y guiado por los datos.

Así pues, ¿Podremos avanzar a la misma velocidad que la tecnología? ¿O en algún momento seremos o estamos siendo un freno?

Según un artículo de MIT Sloan, los factores culturales, aquellos que tienen que ver con el cambio de pensamiento y manera de hacer de las personas, son los principales obstáculos para transformar este oro que son los datos, en valor de negocio y ventaja competitiva. No la tecnología o la arquitectura, las personas.

También podemos encontrar numerosos artículos sobre la importancia de generar e impulsar la Cultura del Dato en las personas de la organización, como este de Deloitte.

Cualquier proyecto de Big Data y Analytics ha de partir de las personas y las necesidades de los que serán sus usuarios, desde el momento del diseño. Es necesario entender sus miedos, estereotipos, sesgos, creencias y alinear con sus prioridades de negocio.

Tomar como punto de partida estas necesidades de negocio y orientarnos a resolverlas y no al revés (el a veces típico ‘tengos estos datos y herramientas, ¿qué puedo hacer con ellos?’), es imprescindible para un resultado exitoso. Y aunque suene básico, es el aspecto que muchas veces se deja en segundo término, deslumbrados por las técnicas o tecnologías de moda. 

Cambiar las metodologías de trabajo o aprender a usar nuevas herramientas no es como apretar un botón, requiere su tiempo, incluso si se trata de herramientas Low Code o No Code. 

Es muy importante por tanto planificar con tiempo, definir cuál es nuestro objetivo como empresa, realizar un diagnóstico del punto de partida 360º evaluando el punto de partida de las habilidades técnicas de las personas que conforman la empresa, uso de herramientas, así como disponibilidad, catalogación y calidad de los datos, automatización de procesos y gestión del cambio.  

A partir de ahí, diseñar un plan de formación personalizado que acompañe la formación técnica con la democratización de los datos disponibles, para la resolución de casos de uso reales y una integración de las nuevas técnicas en el día a día. Empezar por casos de uso pequeños pero con el impacto más relevante, e ir escalando a mayores proyectos.

Sólo partiendo de la definición del reto de negocio de resolver, alineando los esfuerzos a la cobertura de las necesidades, aportando valor desde el primer minuto y orientados a las personas, conseguiremos implantar con éxito los proyectos de Big Data, Analytics o Business Intelligence y convertirnos realmente en empresas Data Driven de forma transversal.

Marta Regina Cano Jiménez

Directora de Inteligencia de Negocio 

Caja de Ingenieros

www.linkedin.com/in/martareginacano

@regiemix

Si quieres más información sobre nuestro master, puedes contactar con nosotros bien por teléfono al +34 910 91 28 42 o +34 630 88 13 53, por whatsapp directamente pinchando aquí o aquí, o mandando un mail con tus datos de contacto (nombre completo y teléfono) a: info@datahack.es

Por Julián García Trueba.

En un tiempo en el que la escasez de recursos ocupa una de las principales preocupaciones de nuestra sociedad, existe un recurso cuya generación crece de forma exponencial con el paso de los años. Este recurso no es otro que los Datos. Los datos generados pueden ser de diversa tipología y procedencia, cada una de las cuales con una serie de aplicaciones de elevado valor para las empresas y administraciones. En concreto, en el presente artículo vamos a focalizarnos en la aportación de los datos geolocalizados de movilidad al contexto de la sociedad actual.

En primer lugar, cabe enfatizar que, si bien la recolección, representación y, en definitiva, el análisis de los datos geolocalizados puede resultar un tema de última tendencia, sus primeras aplicaciones se remontan a mucho antes de que se dieran los primeros hitos de la Inteligencia Artificial o de que se empezase a hablar del Big Data. Prueba de ello es, por ejemplo, es el empleo que el célebre médico inglés Jon Snow hizo de la visualización geolocalizada para salvar a la ciudad de Londres de una de los mayores brotes de cólera de su historia. En concreto, el análisis realizado por Jon Snow consistió en identificar sobre un mapa los hogares de los ciudadanos afectados por cólera, así como la fuente principal de agua que surtía dichos hogares. De tal forma, una vez recogidos los datos y representados en el mapa, le permitió determinar de forma objetiva cuáles eran las fuentes “infectadas”. Con dichos datos, no le resulto difícil la tarea a Jon Snow de convencer a las autoridades de la necesidad de clausurar dichas fuentes y, de esta forma, dar por concluida la epidemia de cólera que solaba la ciudad.

Cómo John Snow salvó la vida de miles de personas
Representación gráfica del mapa en el que se basó Jon Snow para identificar las fuentes afectadas

No obstante, si bien como hemos visto el empleo de la geolocalización no es algo que atañe únicamente a nuestros tiempos, en la actualidad, la convergencia de tecnologías tanto de comunicación como de información ha incentivado la aparición de innumerables aplicaciones multisectoriales. Un ejemplo de ello es las llamadas plataformas de Smart Cities, las cuales proveen de la infraestructura necesaria para garantizar la recopilación de datos resultantes de diversos puntos de la ciudad, la representación de los mismos y el posterior análisis para una gestión eficiente de los servicios focalizados en el ciudadano. 

Plataforma urbana de Coruña smart city seleccionada como referente en  Global City Teams Challenge - eleconomistaamerica.cl

No obstante, las plataformas Smart Cities no son los únicos casos de aplicación basados en la geolocalización. En este sentido, englobando también el concepto de movilidad dentro del análisis de datos geolocalizados cobran especial relevancia los datos generados por las operadoras, procedentes del dispositivo más popular y más empleado en nuestros días, el terminal móvil. Hoy en día, resulta realista afirmar que es extraño quien no dispone de un dispositivo móvil con acceso a internet y aplicaciones instaladas en el mismo. Este hecho es el aprovechado por las operadoras para tener acceso a ciertos datos de sus usuarios. En concreto, algunos de estos datos son los siguientes: la geolocalización del usuario, resultante de la antena a través de la cual puede accede a la conectividad del terminal, las aplicaciones a las que tiene acceso, las condiciones de contratación del usuario, así como datos personales del mismo (edad, sexo, etc). 

De tal forma, mediante el correcto procesamiento de los datos, resulta viable determinar tendencias de movilidad de los usuarios. Para ello, y con el objetivo de cumplir con la normativa vigente de Protección de Datos, como paso previo a su presentación y análisis, las operadoras se ven obligadas a llevar a ejecutar diversos y complejos algoritmos para la agrupación de los mismos según diversos criterios: procedencia, franja horaria, segmentación por edad, por poder adquisitivo o por sexo. 

Una vez ejecutados los procesos de agrupación y el procesamiento de datos por parte de los departamentos de Ingeniería de Datos de las operadoras habilitarán a una serie de insights con importantes aplicaciones en diversidad de sectores, como el turístico, el del retail, o el de la gestión de eventos. En concreto, en lo que respecta al sector turístico, el análisis de estos datos permite conocer la tendencia de movilidad en las principales zonas de atracción turística de las ciudades en función de la edad, las franjas horarias, el sexo, o el país o ciudad de procedencia, distinguiendo entre turistas que pernoctan en la ciudad y aquellos que la visitan en el día. Por otro lado, en lo que respecta al sector del retail, el análisis de los datos de operador, permite a las tiendas y sucursales conocer las tendencias de movilidad por franjas horarias y perfil tanto de los actuales clientes como de los potenciales. Un análisis que permitirá objetivizar la toma de decisiones en lo que respecta, por ejemplo, a la estrategia de expansión de las tiendas. Por último, en lo que respecta a la gestión de eventos, los datos de operador permiten tomar decisiones para una gestión más sostenible de los eventos, incrementando así la experiencia del cliente final. 

Vodafone Analytics Demo - Explore a City - YouTube

En definitiva, de forma adicional al servicio de conectividad y voz que las operadoras proveen a sus clientes, tanto personas físicas, como jurídicas y administraciones, en la actualidad estas compañías proveen de una serie de insights basados en los datos, anonimizados y agrupados, procedentes de los dispositivos móviles de los clientes, los cuales permiten extraer conclusiones objetivas sobre las tendencias de movilidad, un paso más allá en lo que respecta al análisis de datos geolocalizados.

Si quieres más información sobre nuestro master, puedes contactar con nosotros bien por teléfono al +34 910 91 28 42 o +34 630 88 13 53, por whatsapp directamente pinchando aquí o aquí, o mandando un mail con tus datos de contacto (nombre completo y teléfono) a: info@datahack.es

Por Alejandro Arranz

INTRODUCCIÓN

Existe un fenómeno común a los deportes de equipo (por lo menos a los más populares) y es que, para aquellos que les interese alguno de estos deportes, cuando van a consultar la prensa que los cubre, seguramente se encuentre que sus crónicas las copan aquellos que marcan los goles, las canastas, los tantos...etcétera. Igualmente, si este tipo de deportes no te interesa lo más mínimo, pero tuvieras que dar el nombre de algún deportista de élite que los practique...seguramente este se corresponda con el alguno de los omnipresentes en las susodichas crónicas. En pocas palabras, los que “molan” suelen ser invariablemente los máximos anotadores.

En los proyectos relacionados con Inteligencia Artificial, sean de Machine Learning o de Deep Learning (por mencionar las dos disciplinas más populares de esa rama), pasa un poco lo mismo. Si echamos manos de “la prensa” enseguida veremos que los titulares apuntan en la misma dirección: “El modelo que quitará el trabajo a los radiólogos”, “El modelo que ha derrotado al campeón mundial de Go”, “Los treinta modelos embebidos que hacen que los Tesla sean completamente autónomos…”. El modelo es al que apuntan los focos.

Claro...como cuando preguntan a los críos que empiezan a practicar deporte aquello de “y tú ¿cómo quien quieres ser?”, no es habitual que respondan “pues como tal jugador, porque me encanta la infatigable labor que hace en el medio del campo para robar la pelota y sacarla jugada de forma fácil y limpia para el compañero más próximo”. Igualmente cuando alguien que arranca su periplo como Data Scientist, seguramente si le preguntas a qué aspira...no te responderá “a conseguir dar forma a los datos de la forma más adecuada posible de tal manera que el modelo diseñado pueda sacar el máximo provecho de los mismos”.

Queremos meter goles. Queremos hacer modelos.

Si te apetece, otro día, podemos hacer una entrada en el blog sobre la importancia de este tipo de roles de trabajo menos vistoso en el mundo de los deportes de equipo. Por de pronto, vamos a ceñirnos al ámbito de las máquinas y desgranar la importancia de la(s) tarea(s) comprendidas dentro de la limpieza de datos y porque es algo que también mola.

MACHINE LEARNING Y LIMPIEZA DE DATOS

Aunque a estas alturas ya lo tengas seguramente más que claro, no está de mas recordar que el Machine Learning es una disciplina que tiene como objetivo que las máquinas aprendan a partir de la experiencia; es decir: que un modelo matemático sea capaz de extraer los patrones propios de un determinado problema a partir de de un (gran) conjunto de datos relativos a este. Aquel modelo matemático utilizará una o varias máquinas para disponer de la potencia de cálculo necesaria, que le permita exprimir todos esos datos y extraer así ese patrón o aprendizaje relativos a la resolución de ese problema.

Vamos a aterrizar esto con un ejemplo: supongamos que tenemos un conjunto de analíticas de pacientes enfermos y sanos con respecto a una determinada patología. Si queremos construir un modelo que sea capaz de, dada la analítica de un nuevo paciente, determinar si este padece o no aquella patología. Entrenaremos el modelo matemático con los datos que tenemos y este (a su manera) aprenderá qué patrones se dan en las analíticas de aquellos pacientes enfermos, de tal manera que pueda extrapolarlo a nuevos casos.

¿QUIÉN HA ENSUCIADO MIS DATOS?

Quizá el nombre limpieza de datos, resulte un poco engañoso. Valga decir que esta disciplina comprende todo lo necesario para que, según la definición de Machine Learning que acabas de leer, los datos disponibles para resolver el problema sean dispuestos de tal manera que puedan ser utilizados por un modelo matemático para su entrenamiento.

Hay que pensar que dicho modelo maneja únicamente números (existe alguna excepción a esto, pero en general es así). Es decir, nuestros datos, como mínimo, tienen que ser transformados a un formato numérico antes de poder ser utilizados para entrenar un modelo. Ojo a esa coletilla “como mínimo”, quiere decir que esto sería lo básico para que modelo llegue a comenzar su entrenamiento sin problemas. Pero si buscamos que este entrenamiento sea lo más exitoso posible, habrá que recurrir a otras técnicas.

Siempre decimos que, lamentablemente, no existe una receta que pueda ser aplicada a todos los problemas de Machine Learning. No obstante, existen una serie de pasos que prácticamente siempre podemos tomar como referencia a la hora de abordar la limpieza de datos.

MANOS A LA OBRA

Podemos decir que estos pasos que mencionamos a continuación, son innegociables, aunque, como ya hemos indicado, no tienen porque ser los únicos a seguir:

EXPLORACIÓN

Que no nos pueda el ansia por empezar a toquetear: si no nos hemos tomado la molestia siquiera de visualizar como se distribuyen nuestros datos, no tiene sentido empezar a manosearlos. Primero, lo primero: histogramas, boxplots, gráficos de dispersión...todo aquello que ayude a entender cómo se distribuyen las variables o features de las que disponemos. Muy seguramente, de aquí saquemos una intuición de cuales pueden ser problemáticas.

LIMPIEZA

Normalmente en este proceso nos encargamos de los problemas “de bulto”, es decir, aquellos que cantan bastante. Aquí incluimos los archiconocidos valores missing, null, NA, NaN...ya sabes, cualquiera de las distintas formas en las que el Mal puede materializarse en nuestros datos y que se manifiesta mediante la ausencia de dato, donde deberiá de haberlo.

Muy probablemente, el modelo matemático con el que hayas elegido empezar a probar, no sepa que hacer con uno de estos valores ausentes y cascará de forma inmisericorde cuando quieras empezar el proceso de entrenamiento. Así que hay que decidir como rellenarlos...o prescindir de ellos.

Hay más anomalías que podemos tratar en este punto, por ejemplo muestras o registros duplicados. Estas duplicidades pueden ser de distintos tipos, quizá podamos encontrar registros totalmente idénticos o quizá solamente idénticos según algunos campos. En este último caso, habría que considerar si esas duplicidades son normales o no.

En cuanto al entrenamiento se refiere, los registros duplicados no aportan nada, con lo cual se pueden eliminar sin mucho problema. Pero cabe preguntarse sobre su origen, ¿es posible que la presencia de duplicados sea indicativo de algún tipo de problema, quizá, en alguna proceso de extracción de datos?

Tenemos que ser conscientes de que las “cosas raras” que encontremos en nuestros datos, podrían no solo afectar a nuestro entrenamiento, sino ser síntomas de algún tipo de defecto o problema en el flujo de captura y tratamiento de los mismos. Y esto sería algo gordo.

TRANSFORMACIÓN

Salvo honrosas excepciones (mayormente aquellos modelos basados en árboles de decisión), los modelos matemáticos solo manejan números. Es decir que aquellas features categóricas, cuyos valores son de tipo texto (por ejemplo) que podemos encontrar en cualquier dataset, deben ser transformadas de alguna manera en algo numérico para que el modelo matemático pueda entrenar con ellas. El cómo hacer esto, ya depende de del tipo de feature categórica y de su significado.

ENRIQUECIMIENTO

Este es un buen percal. Aquí, podemos decir que practicamente vale todo, desde encontrar un dataset que pueda complementar al que estamos manejando: imagina un dataset con personas y otro dataset de renta per cápita en municipios de España que, cruzándolo con el primero, te permite tener una idea de la renta del individuo en cuestión. En este caso, habríamos enriquecido nuestro dataset de personas, con ese otro dataset de renta per cápita por municipios.

Pero no te preocupes si no tienes ningún otro dataset a mano, hay más maneras de enriquecer el dataset. Por ejemplo a través de features sintéticas, es decir, obtener nuevas features combinando de forma hábil las ya existentes. Esto permite proporcionar a nuestro modelo matemático features más potentes y representativas e, implicitamente, dejar de pasarle otras features más superfluas y menos necesarias.

Incluso el hecho de conseguir identificar simplemente este segundo punto y poder prescindir de esas features innecesarias para entrenar al modelo, sería un éxito. Hay que tener en cuenta, que un dataset más ligero, permitirá entrenamientos más rápidos y por lo tanto nos habilitará para probar más cosas distintas en menos tiempo.

Muy importante: es fácil embuclarse y perderser en cualquiera de estos pasos, pero muy especialmente en este. ¡No obsesionarse! Hay que ir iterando de forma más o menos ágil, probar, cosas, entrenar, avanzar, ir afinando...pero no dar vueltas y vueltas a lo mismo, porque sino, esto se convierte en una esponja de tiempo...y de dinero claro.

OTROS

Aquí podemos incluir lo que se conoce como  inverstigación de outliers o valores que se alejan de forma sospechosa del resto de “compañeros” de distribución. El problema de este tipo de valores es que pueden confundir al modelo a la hora de aprender, ya que suponen ruido para el mismo o lo que es lo mismo, suponen “excepciones a la regla” que queremos que el modelo aprenda. Dicho de otra manera: queremos que el modelo aprenda patrones, no excepciones. Y los outliers son excepciones.

Las acciones con respecto a outliers se orientan a su detección y análisis y en base a estos se determinará qué se hace con ellos (si se hace algo)

Llegados a este punto, es posible que por todo lo comentado hasta ahora, alguien haya colegido que si una feature es numérica y no tienen ningún hueco o valor missing, todo está bien. El caso es que esto no es así.

Es habitual que las features numéricas tengan magnitudes dispares, por ejemplo podemos tener la feature edad de la persona que rara vez pasará de las dos cifras y también la feature renta per capita que, esperemos, siempre llegue por lo menos a cinco. Esta disparidad de magnitudes, puede ocasionar que los modelos matemáticos tiendan a dar más peso a aquellas features cuya magnitud es mayor, opacando a aquellas otras de menor magnitud, por muy valiosas o representativas que puedan ser.

Para evitar esto, se recurren a distintas técnicas de escalado o de estandarización. Dependiendo del tipo de modelo matemático que queramos entrenar, el utilizar unas u otras puede ser crucial. En cualquier caso, la moraleja aquí es que, aun siendo numéricas, las features deben de ser “ajustadas”.

Tampoco queremos extendernos mucho más, como ves, estamos ante una disciplina sumamente interesante y que nos permitirá adquirir un conocimiento muy valioso de los datos que manejamos.

Si quieres más información sobre nuestro master, puedes contactar con nosotros bien por teléfono al +34 910 91 28 42 o +34 630 88 13 53, por whatsapp directamente pinchando aquí o aquí, o mandando un mail con tus datos de contacto (nombre completo y teléfono) a: info@admin_rubicon

Lee la parte 1 aquí.

En realidad, comparar el grado de similitud entre dos películas puede que no sea lo que más interese al usuario. Puede ser más valioso encontrar todas aquellas películas que son más parecidas a la que nos gusta. Para ello, seleccionaremos la columna de la película que nos gusta y la ordenaremos de mayor a menor. Así, Python nos mostrará en orden decreciente de similitud las películas.

Figura 13. Recomendar películas por grado de similitud con Python

3. Recomendaciones basadas en texto


Desafortunadamente, en el mundo real los problemas que tenemos que resolver no tienen etiquetas claras como los géneros para el caso particular de las películas. Por suerte, si hay texto relacionado con ese elemento entonces podemos hacer algo. Este texto puede ser un resumen, una descripción del elemento o la lista de contenidos de un libro. en estos casos usaremos "Term Frequency inverse Document Frequency" o TF-IDF para transformar el testo en información valiosa.


Estos algoritmos dividen el número de veces que una palabra aparece en un documento entre el ratio de documentos globales en que unes palabra aparece. De esta manera, se reduce la importancia de palabras comunes y se incrementa el peso de aquellas palabras que no aparecen en muchos documentos. Por ejemplo, si comparamos el texto de "Harry Potter y La Piedra Filosofal" con el resto de libros de la saga Harry Potter, la palabra Voldemort obtendrá una puntuación baja ya que aparece multitud de veces a lo largo de todos los libros. Por contra, la palabra elixir que está muy relacionada sólo al primer libro de la saga, obtendrá una puntuación alta.

Figura 14. Fórmula TF-IDF

Ahora vamos a trabajar con otro dataset de películas diferente. Este contiene los nombres de las películas y el resumen de las mismas que aparece en la página Wikipedia.

Figura 15. Cargamos el nuevo dataset con el resumen de las películas

La transformación de los datos se hace gracias a TfidfVectorizer de la biblioteca Scikit Learn. Porde efecto, esta herramienta genera una característica por cada palabra presente en un documento. Esto resulta en un gran número de características; por suerte, hay formas de reducir el número de características generador por el vectorizador.

Para ello incluiremos en primer lugar el argumento min_df y le daremos un valor de 2. De esta forma sólo se convertirán en características aquellas palabras que estén presentes en al menos dos documentos. Esto es muy útil ya que las palabras que sólo aparezcan en un documento no son muy importantes a la hora de encontrar similitudes.

Por otro lado, podemos incluir un segundo argumento max_df que elimine aquellas palabras que sean muy comunes. Si lo fijamos a 0.7, no se tendrán en cuenta aquellas palabras que aparecen en más de un 70% de los resúmenes.

Figura 16. inicializamos el vectorizador limitando el número de características a generar

Una vez iniciado el Vectorizer invocaremos al método fit_transform usando la columna resumen del dataframe. El método get_feature_names permite obtener las diferentes características. La matriz dispersa se almacena en un DataFrame que almacena por filas las películas y por columnas los nombres de las características.

Figura 17. Matriz de similitud coseno

Similitud Coseno

En este caso utilizaremos una métrica que cuantifica mejor la similitud entre elementos con mayor variabilidad. A esta métrica se la conoce como Cosine Similarity o Similitud Coseno. Sin entrar en los detalles matemáticos, se encarga de medir el ángulo entre dos documentos en el espacio métrico de multiples dimensiones. Mostramos un ejemplo de esta métrica trasladada al caso del espacio bidimensional. Toma valores entre 0 y 1, donde 1 representa similitud total.

Figura 18. Formula y representación gráfica de la similitud coseno

Esta función permite hacer el cálculo entre dos películas cualesquiera. La diferencia es que en este caso, será necesario hacer un reshape como se muestra a continuación. El grado de similitud entre los resúmenes de la primera y la segunda parte de la película Cars es de 0.38.

Figura 19. Similitud Coseno entre dos películas basado en su resumen

De forma similar y partiendo de un DataFrame, Scikit Learn es capaz de calcular de una vez la similitud coseno entre todas las filas.

Figura 20. Similitud coseno de todos los elementos

Una vez calculados esos valores construimos un nuevo DataFrame de similitudes coseno.

Figura 21. DataFrame de similitudes coseno

Esto nos permite saber qué películas son más parecidas a una en concreto basándonoslos en sus resúmenes. Si buscamos recomendaciones de películas similares a Harry Potter y el Cáliz de Fuego obtenemos sugerencias para visualizar el resto de la saga.

Figura 22. Recomendaciones de películas similares a Harry Potter y el Cáliz de Fuego

Si hacemos la consulta para el caso del Señor de los Anillos: La comunidad del anillo, vemos que nos recomienda las películas de la trilogía y el Hobbit. También nos recomienda Four Sisters and a Wedding debido a que el protagonista de la película se llama Frodo también.

Figura 23. Recomendaciones de películas similares a El Señor de los Anillos: La Comunidad del Anillo

Añadimos un último caso con la película Mary Poppins. El recomendador nos sugiere como segunda opción ver la película Saving Mr. Banks, que trata sobre la colaboración entre Walt Disney y la escritora de la novela Mary Poppins.

Figura 24. Recomendaciones de películas similares a Mary Poppins

Recomendar en base al perfil del usuario

Lo que no hemos tenido en cuenta hasta ahora es que los usuarios no son tan unidimensionales como para que les guste sólo un elemento. La realidad es que el usuario habrá visto una serie de películas y querrá que la recomendación proporcionada por los algoritmos esté alineada con su amplio gusto.

Consideremos el caso que acabamos de mencionar: un usuario que ha visto una serie de películas. La forma más directa de crear el perfil de usuario es inicialmente, creando un vector que contenga los títulos de dichas películas para conseguir a través del método .loc los vectores de características de las mismas.

Figura 25. creando el perfil del usuario

Para terminar de construir el perfil de este usuario es necesario representar todas las preferencias del usuario en una única serie. Eso lo conseguimos haciendo la media de cada característica con el método .mean.

Figura 26. Perfil del Usuario

Este perfil del usuario lo usaremos para encontrar las películas con mayor similitud que no haya visto todavía. En primer lugar, tendremos que determinar el subconjunto de películas que no ha visto todavía (eliminando del dataframe del vectorizer todas aquellas películas que están en la lista de vistas). El número de filas ha disminuido de 34886 a 34880 (6 filas).

Figura 27. resultado de eliminar las seis películas vistas por el usuario

Después calcularemos la similitud coseno entre el perfil de usuario que acabamos de crear y el DataFrame de películas que aún no ha visto el usuario. Después, almacenaremos la salida en un nuevo DataFrame y ordenaremos los resultados para poder acceder y ordenar los datos de forma sencilla.

Figura 28. Recomendación basada en el historial del usuario

Ahora si que el algoritmo ha sido capaz de recomendar en base al historial de películas vistas por nuestro usuario, y no sólo basándose en películas individuales. Los registros más arriba en la tabla son los más parecidos a los intereses del usuario en base al background de intereses que recoge su perfil.

Si quieres más información sobre nuestro master, puedes contactar con nosotros bien por teléfono al +34 910 91 28 42 o +34 630 88 13 53, por whatsapp directamente pinchando aquí o aquí, o mandando un mail con tus datos de contacto (nombre completo y teléfono) a: info@datahack.es

Lee la parte 2 aquí.

Las recomendaciones tienen una influencia muy importante en muchas de las decisiones que tomamos en el día a día. Algunos ejemplos de recomendaciones directas podrían ser las que nos dan nuestros amigos sobre los restaurantes a los que han ido el fin de semana o la recomendación de un determinado modelo de teléfono basada en los comentarios de una web.

Graphical user interface, website

Description automatically generated
Figura 1. Motor de recomendación de Disney+.

Otras recomendaciones más indirectas podrían ser las que lanza Disney+ sobre las películas o programas que pueden ser más afines a nuestros gustos, o las propuestas de items que hace Amazon en relación al producto que estás comprando actualmente.

En este y en los próximos posts vamos a hablar sobre la ciencia detrás de estos motores y cómo construirlos de forma sencilla usando Python.

1. Introducción a los motores de recomendación

¿Qué son los motores de recomendación?


Los motores de recomendación son herramientas que usan el feedback de los usuarios para encontrar nuevos elementos que puedan ser afines a estos usuarios u otros, asumiendo que los usuarios con preferencias similares en el pasado probablemente tendrán las mismas preferencias en el futuro.

Estos métodos de recomendación se benefician de multiples emparejamientos entre los usuarios que dan su opinión y los elementos sobre los que opininan. De este modo, se proporcionarán mejores recomendaciones de un producto cuanto mayor sea el feedback recibido sobre el mismo. También se darán recomendaciones más personalizadas a aquellos usuarios que hayan dado más opiniones.

¿Cuándo es interesante usar los motores de recomendación?

Los motores de recomendación pretenden resolver un problema específico de Machine Learning: sugerencia de productos, servicios, entidades a un usuario en base a sus opiniones y de otros usuarios. 

Lo que es importante tener claro si vamos a diseñar un motor de recomendación es que los datos son registros de preferencias de diferentes usuarios. En función de cómo se miden estas preferencias los datos se clasifican en implícitos y explícitos. Los datos explícitos contienen feedback directo de un usuario como por ejemplo su opinión sobre un producto expresada en forma de puntuación (por ejemplo: el número de estrellas con el que puntuamos un producto en Amazon). Por contra, los datos implícitos sacan información de las acciones del usuario para resumir sus preferencias (por ejemplo: histórico de reproducciones en Spotify, que te puede permitir identificar los estilos de música preferidos por ese usuario).

2. Recomendaciones basadas en contenido

Las recomendaciones pueden realizarse basadas en la opinión general. Sin embargo, este tipo de recomendaciones no son personalizadas. En este post os vamos a enseñar distintos modelos para hacer recomendaciones a un usuario basándonos en la similitud de unos items con otros que le gustaron al usuario en el pasado. Es decir, si al usuario en cuestión le gustó la película A, y mi modelo determina que las películas A y B son similares, entonces es bastante probable que al usuario le guste la película B también. En este post os mostraremos como determinar qué items son similares. Estas recomendaciones que se llevan a cabo encontrando elementos con atributos similares se denominan recomendaciones basadas en contenido.

Figura 2. Recomendaciones basadas en contenido.

Atributos o características de cada elemento

Pongamos por caso que tenemos un dataset de películas. Los atributos de cada película podrían ser: título, director, fecha de estreno, género, actores protagonistas, duración, idioma, etc. Dentro de estos atributos podríamos incluir cualquier información descriptiva. La gran ventaja de usar estos atributos junto a la opinión de los usuarios es que se pueden hacer recomendaciones de cualquier elemento con atributos. Esto permite recomendar incluso nuevos items que los usuarios no tengan en el radar aún.

Los modelos basados en contenido usan cualquier característica disponible para construir perfiles de items que nos permitan a los científicos de datos compararlos matemáticamente. Esto nos permitirá identificar elementos similares y recomendarlos.

Figura 3. Atributos de una película.

Vectorización de atributos

La mejor manera de extraer información de estos atributos es vectorizándolos. A continuación se muestra un ejemplo donde aparecen diferentes elementos por filas y las características o atributos posibles por columnas.

Y os preguntareis, ¿por qué organizar los datos de esta manera?. Organizar la información de forma tabular nos permite calcular la distancia o similitud entre elementos de forma sencilla, lo cual es vital para hacer las recomendaciones de las que estamos hablando en este post.

Figura 4. Vectorización de los datos (formato tabular).

A continuación, aprenderemos a generar estas tablas a partir de los datos. En esta ocasión, vamos a usar un dataset de películas (movies.csv). A partir de la tabla que se muestra a continuación, queremos obtener una nueva tabla que contenga una fila por película (una película puede aparecer varias veces en el dataset original porque puede clasificarse dentro de varios géneros) con un 1 en aquellos atributos que la representen y ceros en los que no.

Figura 5. Carga del dataset original.

Para transformar los datos podemos usar la función crosstab de pandas. El primer argumento que le pasemos a la función se convertirá en las filas y el segundo en las columnas. A continuación obtenemos el resultado deseado.

Figura 6. Cross_tab de películas y géneros con Pandas.

Con nuestros datos en el formato adecuado estamos en disposición de comenzar a hacer comparaciones y recomendaciones. Pero para ello, tenemos que encontrar la manera de calcular el grado de similitud entre filas.

Introducción al coeficiente de similitud de Jaccard

La métrica que vamos a usar para medir el grado de similitud entre los distintos elementos de nuestra tabla "encodeada" se llama coeficiente de similitud de Jaccard. Este coeficiente es el ratio de atributos que dos elementos tienen en común, dividido por el número total de atributos de ambos. Este coeficiente toma valores entre 0 y 1, y adquiere valores más altos cuanto mayor es el número de atributos en común de los dos elementos.

Figura 7. Coeficiente de similitud de Jaccard (fórmula).

Pasamos a calcular el coeficiente de similitud de Jaccard para los datos con los que hemos empezado a trabajar. Empezaremos importando jaccard_score de la biblioteca sklearn metrics. Esta función toma dos filas y calcula el grado de similitud entre ellas. 

A continuación mostramos el resultado de comparar dos películas del género animación ('Tangled' y 'WALL-E'). Puesto que pertenecen al mismo género el coeficiente de similitud de Jaccard es 1. Sin embargo, cuando comparamos dos de distinto género como 'Remember me' que es un Drama y WALL-E, el resultado es 0.

Figura 8. Cálculo del coeficiente de similitud de Jaccard con Scikit Learn.

Si queremos establecer similitudes entre todos los elementos de nuestro dataset de una vez hacemos uso de dos funciones del paquete Scipy. En primer lugar, pdist (el nombre corto para pairwise distance) nos ayuda a calcular las distancias de todos los pares posibles, usando como argumento la métrica Jaccard. El resultado es una matriz que contiene todas las distancias en formato 1D array. Por ello, tendremos que usar la función squareform para transformar estos datos en 1D a la forma rectangular de matriz deseada.

Figura 9. Calculo de la distancia de Jaccard con Scipy.

Nótese que el cálculo que hacemos con la función pdist es la distancia, que expresa el grado de diferencia entre cada uno de los registros. Los elementos de la diagonal, que comparan un elemento con el mismo, muestran una distancia de 0 porque son iguales y por tanto el grado de diferencia es nulo. Como estamos interesados en calcular el grado de similitud que es el complementario de la operación que acabamos de realizar, restaremos a 1 los valores de matriz_cuadrada_distancias.

Figura 10. Cálculo del coeficiente de similitud de Jaccard on Scipy.

Para poder usar esta información con mayor comodidad, podemos pasar estos datos a un DataFrame. El DataFrame contendrá como argumento principal los valores de coeficiente_similitud_jaccard y como índices y columnas los nombres de las películas.

Figura 11. DataFrame con coeficientes de similitud de Jaccard.

Ahora podemos buscar cómodamente la distancia entre pares.

Figura 12. Comparación del grado de similitud entre dos películas.

Sigue en parte 2 aquí.

Si quieres más información sobre nuestro master, puedes contactar con nosotros bien por teléfono al +34 910 91 28 42 o +34 630 88 13 53, por whatsapp directamente pinchando aquí o aquí, o mandando un mail con tus datos de contacto (nombre completo y teléfono) a: info@datahack.es

Temática

Python y Machine Learning

Tiempo de lectura

5 minutos

Claves de contenido del artículo

Manipular ficheros Excel sin utilizar Microsoft Excel

Enviar correos electrónicos desde Python

Modificar formatos de imágenes


Es innegable que hoy en día tener conocimientos de programación es imprescindible. Hace años conocer y manejar adecuadamente el paquete Office “básico” (Word, Power Point, Excel) te permitía acceder a puestos laborales mejores que la media. Hoy en día y más después de la pandemia, la utilización de las herramientas Office es un fondo de armario que casi cualquier persona tiene conocimiento.

Pero, ¿qué pasa si quieres seguir formándote y desarrollando tus capacidades para, no solo acceder más fácilmente a otros puestos de trabajo, si no también para ser un profesional mucho más productivo y que puede aportar mejores soluciones tanto en el ámbito laboral como personal?

Desde mi punto de vista, lo mejor es formarte en algún lenguaje de programación que te permita automatizar y sistematizar tareas que, de otra manera, tendrías que ejecutar de manera manual y tediosa una a una.

Para todas aquellas personas que nunca han programado, uno de los mejores lenguajes para empezar es Python: un lenguaje de programación sencillo, fácil de comprender y con una curva de aprendizaje asequible que te permitirá poner a funcionar pequeños y no tan pequeños programas.

Antonio Fernández Troyanno

Responsable de proyectos Oficina de Transformación Bergé Logistics

Autor del artículo

Con el fin de ilustrar el potencial de Python, a continuación, te presentaré una serie de proyectos programados en Python para que veas el potencial de este magnífico lenguaje de programación.


ATENCIÓN: En este artículo vais a poder ver ciertos fragmentos de código que, si no tenéis conocimiento ninguno de programación, quizás pueda asustarte. Aleja esos terrores de tu mente, con un poco de trabajo y formación, verás que no es nada del otro mundo.

  1. Manipular ficheros Excel sin utilizar Microsoft Excel
  2. Enviar correos electrónicos desde Python
  3. Modificar formatos de imágenes
  4. Extraer información de páginas web y crear tu propio algoritmo de Machine Learning

¡Vamos con ello!


Manipular ficheros Excel sin utilizar Microsoft Excel

En muchas ocasiones nos surge la necesidad de concatenar o unir varios ficheros Excel de cientos o miles de líneas.

Imaginemos que cada mes se genera un reporte con información de financiera de la empresa, información de tus cuentas bancarias o cualquier otro ejemplo que se te pueda ocurrir.

Imagina que tenemos 12 ficheros Excel con sus mismas columnas y necesitamos unificar toda esa información en 1 solo fichero.

¿Qué soluciones tenemos?

Opción a) Abrir uno a uno cada fichero, copiar y pegar esa información y repetir esa tarea 10 veces más. 

Opción b) Utilizar algún lenguaje de programación que nos permita simplificar esta tarea.

Sin duda, la opción a utilizar es la Opción b). Quizás inicialmente te lleve más tiempo programar en Python tu programa “UNIR EXCELS”, pero, ¿imagina que en lugar de 12 ficheros son 50? O, peor aún, que cada semana tienes que unificar 20 Excels….

¿No tiene sentido programar y automatizar esa tarea? Pues con Python podrías, y es mucho más sencillo de lo que parece…

<script src="https://gist.github.com/afernandez119/c4777133ef457f9569684811d611eb18.js"></script>

Interfaz de usuario gráfica, Texto, Aplicación, Correo electrónico, Sitio web

Descripción generada automáticamente

Con nuestro Máster Experto en Data Science y Big Data puedes profundizar en las aplicaciones de Python y así volverte un experto en la materia.

Enviar correos electrónicos desde Python

¿Quién podría imaginar que utilizando Python podríamos automatizar el envío de correos electrónicos? 

Imagina que todos los días tienes que enviar una serie de correos electrónicos a proveedores, empleados o alumnos, ¿por qué no automatizarlo?

En Python existen diferentes librerías que te facilitan esta tarea, veamos un ejemplo.

<script src="https://gist.github.com/afernandez119/6a93f9ad5673efcc29e0061cb1c0141e.js"></script>

Interfaz de usuario gráfica, Texto, Aplicación, Correo electrónico

Descripción generada automáticamente

Modificar formatos de imágenes

¿Nunca te ha pasado que necesitas cambiar la extensión de una imagen y no sabes cómo hacerlo?

Buscas en Google como un loco y te sale un montón de servicios online, software de gratis pero con limitaciones, … ¿por qué no utilizar Python para esto?

Gracias a la librería de Python Pillow podremos, entre otras muchas cosas, modificar la extensión de nuestra imagen de forma rápida y sencilla (3 líneas de código…)

<script src="https://gist.github.com/afernandez119/f712eeb44ed35471b32cce379554c5d7.js"></script>

Interfaz de usuario gráfica, Aplicación

Descripción generada automáticamente

Extraer información de páginas web y crear tu propio algoritmo de Machine Learning

Y…. ¿si queremos algo más elaborado? ¡Pues aquí tienes! A continuación te presento un proyecto mucho más completo en Python en el que intentamos predecir el éxito que va a tener una noticia antes de publicarla analizando el éxito que tuvieron noticias pasadas.

El proyecto incluye:

En este caso te un vídeo del proyecto completo sobre “Cómo predecir el éxito de una noticia mediante Machine Learning”

Y… ¡hasta aquí el artículo de hoy! Como ves estos son 4 ejemplos muy diversos sobre el potencial que tiene la utilización de Python a nivel profesional y personal, sin duda una herramienta muy potente e imprescindible conocer en el entorno de digitalización actual.

Atrévete a formarte con nuestro Máster Experto en Data Science y Big Data

Una formación 100% online y adaptada a ti para que te conviertas en un especialista en Inteligencia de Negocio

Por Juan Manuel Jambrina Montesinos.

Parte I aquí.

Parte II aquí.

(Dashboard interactivo en Tableau Public)

¿Cuánto pagamos los madrileños por incumplir las normas de circulación?

Dentro del análisis de las sanciones que acarrean todas estas multas se pueden destacar principalmente 2 tipos: el importe económico y la retirada de puntos.

Respecto al monto económico general (gráfico 19) se puede observar que la mayoría de las multas conllevan una sanción económica de entre 90 y 180 euros siendo de media 98.74€. Dentro de este rango comprobamos que solo se imponen multas de carácter leve (46.75%) o graves (39.81%) y en ningún caso muy graves.

En el caso de las multas leves las sanciones van de 0€ a 90€ mientras que las multas graves conllevan sanciones económicas mucho más importantes que, aunque se centran entre los 90 y los 180€ pueden llegar a los 450€. Por último las multas muy graves son siempre las que conllevan un mayor importe económico que está por encima de los 450€.

https://miro.medium.com/max/1014/1*aB1xygUdjOeCrwUeRvSq_Q.png

Gráfico. 19 — Porcentaje de multas impuestas durante 2020 en función de los rangos de importe y su gravedad

Respecto a la retirada de puntos del carnet (gráfico 20) se sigue la misma dinámica que con las multas económicas, el 96.88% de las sanciones leves y graves no conllevan retirada de puntos. En el caso de las multas graves solo hay un pequeño porcentaje que conlleva retirada de 2, 3 o 4 puntos (1.18%, 0.39% y 1.22% respectivamente). En cambio, las multas muy graves siempre conllevan retirada de 4 o 6 puntos (0.04% y 0.23% respectivamente).

https://miro.medium.com/max/1400/1*wYjBCX3YjmevRWi6JPc0wQ.png

Gráfico. 20 — Porcentaje de multas en función de los puntos retirados por cada multa y su gravedad

Los motivos que implican una mayor retirada de puntos son rebasar un semáforo en rojo (59.772 puntos perdidos) y los excesos de velocidad (58.434 puntos perdidos) que además en su mayoría son consideradas faltas graves. En el siguiente nivel están las multas por conducir bajo los efectos del alcohol o drogas (16.888 puntos perdidos) que además son consideradas todas faltas muy graves, las sanciones por conducción temeraria (12.074 puntos perdidos) en las que si se observa una repartición entre faltas graves y muy graves y las sanciones por el uso de dispositivos no permitidos durante la conducción (11.145 puntos perdidos) también consideradas casi en su totalidad faltas graves. El resto de multas que conllevan retirada de puntos son la falta de elementos de protección (principalmente el casco o las sillas de bebe), no respetar la señalización y los delitos por desobediencia, adelantamientos ilegales e intentos de fuga, el lanzamiento de objetos, algunos estacionamientos y faltas de autorización. Lo que podemos observar también es que hay algunos motivos que no ocasionan nunca una pérdida de puntos como son las denuncias por acondicionamiento de la carga, conducta indebida, daños en el mobiliario urbano, la falta de combustible u otras faltas menores (gráfico 21).

https://miro.medium.com/max/1006/1*FJ34iEcK5TAGpBp7JrIh6g.png

Gráfico. 21 — Número total de puntos retirados en 2020 por cada motivo de sanción

¿Cuánto corremos los madrileños con el coche?

Siendo las multas por exceso de velocidad uno de los motivos de sanción más frecuente y que conllevan una mayor retirada de puntos se quiso hacer un análisis más exhaustivo del mismo.

Según los datos (gráfico 22) se observa que hay vías donde es más probable ser multado según el límite máximo de la misma. Las vías donde más sanciones se imponen son aquellas cuyo límite máximo de velocidad son 70 Km/h con el 59.98% del total y a mucha distancia estarían las vías con límites de velocidad de 90 y 50 Km/h con 21.43% y 16.13% del total respectivamente. En el resto de vías donde los límites de velocidad son 30, 40, 60 y 80 los porcentajes de sanciones son casi residuales siendo las vías de límite máximo de 30 Km/h las que menor porcentaje tienen con un 0.27%.

https://miro.medium.com/max/526/1*MLEX0vMdaWQcUPZ8fA8gxw.png

Gráfico. 22 — Límites de velocidad de las vías con más multas durante 2020

Algo que también llama la atención es que la diferencia entre la velocidad a la que se circula cuando recibes una multa por exceso de velocidad y el límite de velocidad máximo de la vía parece influir en la cantidad de multas impuestas (gráfico 23).

Mas de la mitad de las multas por esta causa (56.84%) se imponen cuando se ha superado el límite de la vía entre 3 y 10 Km/h lo que podría no ser algo excesivo y que podría deberse más a un despiste que a un hecho consciente. El 43.16% restante han excedido la velocidad en más de 10Km/h, velocidades que están más asociadas a una conducción más peligrosa para el propio conductor y el resto de vehículos de la vía. Dentro de este último rango, hay 546 sanciones que se producen por exceder la velocidad límite de la vía por encima de 50 Km/h, llegando a ser impuestas 3 sanciones por circular a 160 Km/h cuando el límite de la vía era 90 Km/h.

https://miro.medium.com/max/788/1*X_xI2G7mcJulgz0TxjjSpg.png

Gráfico. 23 — Diferencia entre velocidad de circulación y velocidad limite de la vía cuando se impone la sanción

Durante el análisis se comprueba que la velocidad máxima de la vía no es lo que marca la sanción, lo que condiciona la pérdida de puntos es la diferencia entre esa velocidad máxima y la velocidad de circulación del vehículo en el momento de la multa (gráfico 24). Cuando esa diferencia no supera los 20 Km/h respecto de la velocidad máxima de la vía, la sanción no implica retirada de puntos. Es a partir de 21 Km/h cuando observamos que se establecen rangos de velocidad que marcan los puntos retirados. Cuando existe un exceso de entre 20 y 30 Km/h la sanción impuesta implica una retirada de 1 punto de media, los excesos de 30 a 40 Km/h por encima del límite de la vía implican una retirada de 3 puntos de media y que si el exceso es de entre 40 y 50 km/h la retirada es cercana a los 3.5 puntos de media. Cuando se excede entre 50 y 60 km/h la multa impuesta conlleva una retirada de 4 puntos y es cuando excedes los 60 Km/h por encima de la velocidad límite de la vía cuando se establecen 6 puntos sanción, la sanción máxima respecto a la retirada de puntos.

https://miro.medium.com/max/902/1*8bOkflnotgpdO4XaPqo4Mw.png

Gráfico. 24 — Número medio de puntos retirados en función de la Diferencia entre velocidad de circulación y velocidad límite de la vía cuando se impone la sanción

¿Quién es el encargado de multarnos en Madrid?

Las autoridades encargadas de imponer sanciones en materia de tráfico en el Ayuntamiento son 4 (gráfico 25):

https://miro.medium.com/max/1400/1*XSCjz-VHpPch_90sR-Pcsg.png

Gráfico. 25 — Número de multas y total recaudado por los cuerpos encargados de imponer sanciones de tráfico en el municipio de Madrid

Entonces, ¿Cómo se conduce por el municipio de Madrid?

Madrid es un municipio donde el tráfico es rápido, intenso e impredecible y hay zonas donde estas peculiaridades se complican. La que se ha ganado su mala fama es la M-30, ya que es donde más infracciones se cometen y que los distritos Centro, Ciudad Lineal y Salamanca quizás sería mejor evitarlos a la hora de conducir. Además, también hay horarios donde conducir por Madrid parece no ser una buena idea, principalmente en las primeras horas de la mañana y las ultimas de la tarde.

Pero a pesar del ritmo frenético de la ciudad de Madrid y de estar considerada una de las ciudades con el tráfico mas caótico de España, los datos reflejan una versión bastante menos dura cuando se trata de peligrosidad.

Conducir por Madrid no es tan peligroso como podría parecer y muestra de ello es que la gran mayoría de las denuncias son de carácter leve y que en su mayoría se deben a estacionamientos ilegales y a no respetar ciertas zonas limitadas al tráfico. Ni siquiera en las sanciones por excesos de velocidad parecen dar la razón a las malas lenguas ya que mayoritariamente las velocidades a las que se circula en los momentos en que se imponen las multas no son demasiado elevadas y parecen deberse a rebases del límite de la vía por despiste más que por conducciones imprudentes que impliquen riesgos para la integridad física del resto de conductores.

Originally published at https://www.linkedin.com.

More from Juan Manuel Jambrina Montesinos

Amante de los datos y la visualización. Creándome un futuro basado en los datos

chevron-down