Está en la página 1de 28

SDC Certified Program in Python for Data

Science
Introducción
Prof. Manuel Sigüeñas, M.Sc.(c)

Prof. Lenguajes de Programación para Ciencia de Datos /Cloud


solutions / SCRUMStudy Certified Trainer
msiguenas@socialdata-peru.com

1. Conceptos fundamentales de Ciencia de Datos


2. Ciclo de Vida de un proyecto de analítica de datos
3. Arquitectura de un proceso de Machine Learning
4. Introducción a las librerías de Python para Ciencia de Datos

In [2]: from IPython.display import Image


%matplotlib inline

Ir a inicio

1. Conceptos fundamentales de Ciencia de Datos


¿Por qué ser un científico de datos?
Un científico de datos dirige proyectos de investigación y/o consultoría para extraer
información valiosa de macrodatos y tiene aptitudes de tecnología, matemáticas, negocios y
comunicaciones. Las organizaciones usan esta información para tomar mejores decisiones,
resolver problemas complejos y mejorar sus operaciones. Al revelar conclusiones accionables
ocultas en grandes conjuntos de datos, un científico de datos puede mejorar
significativamente la capacidad de su empresa para alcanzar sus objetivos. Por eso los
científicos de datos están en alta demanda e incluso se consideran "estrellas del rock" en el
mundo empresarial.
La ciencia de datos es uno de los campos de más rápido crecimiento en el mundo

Cifras:
* El 59% de toda la demanda de trabajo de Data Science and Analytics (DSA) está en Finanzas y Seguros,
Servicios Profesionales y TI.

Los trabajos de DSA son los más destacados en la industria de Finanzas y Seguros, donde
representan el 19% de todas las vacantes. Las industrias de servicios profesionales y TI siguen
con una demanda relativa de 18% y 17% para trabajos de DSA, respectivamente.

El siguiente gráfico proporciona un análisis de la demanda de categoría de trabajo DSA por


industria.

In [15]: Image(filename='D:/Python/1. Nivel I/0/imagenes/Data-Science-and-Analytics-Demand-by-indu

Out[15]:

In [14]: Image(filename='D:/Python/1. Nivel I/0/imagenes/Data-science-and-analytic.png',

Out[14]:

* Las habilidades de aprendizaje automático, big data y ciencia de datos son las más difíciles de reclutar y
potencialmente pueden crear la mayor interrupción para el desarrollo continuo de productos y las estrategias
de comercialización si no se cumplen.
Referencia: The Quant Crunch: How The Demand For Data Science Skills Is Disrupting The
Job Market.

Descargar en: https://www.ibm.com/downloads/cas/3RL3VXGA

Ir a inicio
¿Qué es la Ciencia de Datos?
Microsoft define la Ciencia de Datos como el estudio científico de datos para obtener
conocimientos. Este campo combina varias materias para extraer conocimientos de conjuntos
de datos masivos con el fin de tomar decisiones y predicciones informadas. Los científicos de
datos, los analistas de datos, los arquitectos de datos, los ingenieros de datos, los
estadísticos, los administradores de bases de datos y los analistas de negocios trabajan en el
campo de la ciencia de datos.

En pocas palabras, la ciencia de datos es el análisis sistemático de datos dentro de un marco


científico. Es decir, la ciencia de datos es

• un enfoque adaptativo, iterativo y por fases para el análisis de datos,


• realizado dentro de un marco sistemático,
• que descubre modelos óptimos,
• evaluando y contabilizando los verdaderos costos de los errores de predicción.

La ciencia de datos combina el

• enfoque basado en datos de análisis de datos estadísticos,


• el poder computacional y la perspicacia de programación de la informática, e
• inteligencia de negocios específica dal campo de aplicación, todo esto para descubrir
información procesables y rentables de grandes bases de datos.

In [30]: Image(filename='D:/Python/1. Nivel I/0/imagenes/datascience.png', width=600)


Out[30]:

Fuente: https://www.ibm.com/developerworks/opensource/library/os-datascience
/figure1.png

In [9]: Image(filename='D:/Python/1. Nivel I/0/imagenes/Data_Science.png', width=600)

Out[9]:
Ir a inicio

2. Ciclo de Vida de un proyecto de analítica de datos

BANCA

• 5000 clientes morosos - 5% clientes (KPI base)


• 1000 clientes morosos - 1% clientes (KPI objetivo)

Requimientos del modelo

In [1]: 4000/5000

Out[1]: 0.8

In [3]: 0.7*5000

Out[3]: 3500.0

sensibilidad: es la precisión del modelo con respecto a su clase positiva (morosidad)

Sensibilidad : 0.8

Intentan imitar el proceso de aprendizaje del comportamiento humano

Data: Enero 2020 - Diciembre 2021

• 300000 registros
• Train 210000 (sirven para desarrollar proceso de aprendizaje) técnicas de aprendizajes se
llaman modelos: Random forest, SVM, Redes neuronales...
• Test 90000 (sirven para probar qué tan bueno ha sido proceso de aprendizaje)

Naive Bayes ha sido entrenado y testado se despliega

Acciones empresariales

"decisiones basadas en datos"

desplegado en enero de 2022

Eduardo ----> Naive Bayes ----> resultado

In [ ]: 20 usuarios o clientes

Sensibilidad : 0.8

febrero de 2022

Sensibilidad : 0.8

In [ ]: Deriva de los datos para evaluar modelos

In [ ]: comportamiento de los datos de entrenamiento [train]


comportamiento de los datos del periodo en evaluación [enero 2022, febrero 2022]

Arquitectura

• arquitectura utilizada para el entrenamiento: reporte de entrenamiento


• arquitectura utilizada para la inferencia (despliegue): reporte de inferencia

Ir a inicio

Tipos de aprendizaje
Tres tipos de aprendizaje automático: supervisado, no supervisado y reforzado

In [19]: Image(filename='D:/Python/1. Nivel I/0/imagenes/00_01.png', width=600)


Out[19]:

Predicciones sobre el futuro con el aprendizaje supervisado


EL objetivo principal es a partir de datos de entrenamiento etiquetados, que nos permite
hacer predicciones sobre datos futuros o no vistos.

Estos datos de entrenamiento etiquetados pueden ser discretos, conocidos como tarea de
clasificación, o continuos, conocidos como tarea de regresión

In [20]: Image(filename='D:/Python/1. Nivel I/0/imagenes/00_02.png', width=600)

Out[20]:

Clasificación para predecir etiquetas de clase

• Subcategoría del ML cuyo objetivo es predecir las etiquetas de clase categórica.


• La etiqueta de clase puede ser de naturaleza binaria o multiclase
In [29]: Image(filename='D:/Python/1. Nivel I/0/imagenes/00_03.png', width=600)

Out[29]:

Regresión para predecir resultados continuos


En el análisis de regresión tenemos un número de variables predictoras (explicativas) y una
variable de respuesta continua (resultado o destino), y tenemos que encontrar una relación
entre estas variables que nos permita predecir un resultado.

In [28]: Image(filename='D:/Python/1. Nivel I/0/imagenes/00_04.png', width=600)


Out[28]:

Descubrir patrones con el aprendizaje sin supervisión


Trabajamos con datos sin etiquetar o datos de estructura desconocida.

El agrupamiento es una técnica exploratoria de análisis de datos que nos permite organizar
un montón de información en subgrupos significativos (clústers) sin tener ningún
conocimiento previo de los miembros del grupo.

El agrupamiento también se denomina a veces clasificación sin supervisión.

In [27]: Image(filename='D:/Python/1. Nivel I/0/imagenes/00_06.png', width=600)


Out[27]:

Ir a inicio

3. Arquitectura de un proceso de Machine Learning


Ir a inicio

Plataformas y herramientas
Existen múltiples plataformas y herramientas modernas para generar y ejecutar modelos de
Machine Learning

•R
• Python
• RapidMiner
• Microsoft Azure ML Studio
• Knime
• Weka
• TensorFlow
• ... y muchas otras más

In [37]: Image(filename='D:/Python/1. Nivel I/0/imagenes/Software.png', width=600)


Out[37]:

4. Introducción a las librerías de Python para Ciencia


de Datos
¿Qué es Python?
Python es un lenguaje de programación que adquirido considerable popularidad entre
programadores, aficionados y estudiantes por su alto nivel de expresividad, sus códigos
compactos, su sencillez y su capacidad para crear tanto aplicaciones de escritorio con
interfaz gráfica de usuario como aplicaciones web.

Lo señalado lo hace un programa multipropósito

In [39]: Image(filename='D:/Python/1. Nivel I/0/imagenes/bigdata_datascience.png', width=


Out[39]:

Anaconda es una distribución Python muy popular que aglutina varios paquetes para análisis
de datos y aprendizaje automática. Con Anaconda tenemos ya preparadas muchas otras
opciones, herramientas y librerías, sin tener que instalarlas una por una.

Instalar Anaconda es muy sencillo. Debemos acceder al siguiente enlace:


https://anaconda.org/

Una vez en en sitio web dirigirnos a la pestaña Download Anaconda.

In [43]: Image(filename='D:/Python/1. Nivel I/1/imagenes/01_04.png', width=600)


Out[43]:

Jupyter Notebook
Jupyter es una consola como IPython, sólo que con éste podemos crear proyectos y acceder
desde un navegador y tenerlos disponibles de forma local o en repositorio en la nube. Para
instalar Jupyter lo podemos hacer de forma independiente o con Anaconda.

In [42]: Image(filename='D:/Python/1. Nivel I/1/imagenes/01_07.png', width=600)

Out[42]:

Python tiene una cantidad abrumadora de paquetes que se pueden usar en una
configuración de aprendizaje automático. El ecosistema de aprendizaje automático de
Python se puede dividir en tres tipos principales de paquetes:

• Data fits in memor (Los datos en la memoria)


• Optimize your code (optimizar código)
• Big data

In [40]: Image(filename='D:/Python/1. Nivel I/0/imagenes/librerias.png', width=600)


Out[40]:

4.1. Data fits in memor (Los datos en la memoria)


Pandas es un paquete de alto rendimiento, pero fácil de usar y de discusión de datos. Nos
permite trabajar con data frame en Python, un tipo de tabla de datos en memoria. Es un
concepto que debería sonar familiar a los usuarios habituales de R.

In [46]: Image(filename='D:/Python/1. Nivel I/0/imagenes/pandas.png', width=600)


Out[46]:

NumPy le brinda acceso a potentes funciones de matriz y funciones de álgebra lineal.

In [47]: Image(filename='D:/Python/1. Nivel I/0/imagenes/numpy.png', width=600)

Out[47]:

Matplotlib es un paquete de trazado 2D popular con algunas funciones 3D.

In [48]: Image(filename='D:/Python/1. Nivel I/0/imagenes/matplotlib.png', width=600)


Out[48]:

SymPy es un paquete utilizado para matemática simbólica y álgebra computacional.

In [49]: Image(filename='D:/Python/1. Nivel I/0/imagenes/sympy.png', width=600)


Out[49]:

RPy2 le permite llamar a funciones de R desde Python. R es un programa estadístico muy


popular.

In [50]: Image(filename='D:/Python/1. Nivel I/0/imagenes/rpy2.png', width=600)

Out[50]:

NLTK (Natural Language Toolkit) es un kit de herramientas de Python con un enfoque en


análisis de texto.

In [51]: Image(filename='D:/Python/1. Nivel I/0/imagenes/nltk.png', width=600)


Out[51]:

StatsModels es un paquete para métodos y algoritmos estadísticos.

In [45]: Image(filename='D:/Python/1. Nivel I/0/imagenes/statsmodels.png', width=600)

Out[45]:

Scikit-learn es una librería llena de algoritmos de aprendizaje automático.

In [44]: Image(filename='D:/Python/1. Nivel I/0/imagenes/scikit-learn.png', width=600)


Out[44]:

4.2. Optimize your code (optimizar código)


CPU o Central Proccess Unit, es el encargado deprocesar toda la información que le
solicitamos al equipo. Esto significa que es un chip bastante atareado.Ddependiendo del
modelo que tengamos puede contar con 1 o varios núcleos para poder diversificar las tareas
y realizarlas.

In [56]: Image(filename='D:/Python/1. Nivel I/0/imagenes/cpu.png', width=600)


Out[56]:

Las GPU tarjeta gráfica como normalmente la conocemos (Graphic Proccess Unit), están
diseñadas para procesar enormes cantidades de operaciones matemáticas por segundo en
tiempo real.

In [58]: Image(filename='D:/Python/1. Nivel I/0/imagenes/gpu.png', width=600)


Out[58]:

Rendimiento de la GPU vs. el de la CPU

Una forma sencilla de comprender la diferencia entre una GPU y una CPU es comparar la
forma en que procesan las tareas. Una CPU tiene unos cuantos núcleos optimizados para el
procesamiento en serie secuencial, mientras que una GPU cuenta con una arquitectura en
paralelo enorme que consiste de miles de núcleos más pequeños y eficaces, y que se
diseñaron para resolver varias tareas al mismo tiempo.

In [59]: Image(filename='D:/Python/1. Nivel I/0/imagenes/cpu_vs_gpu.png', width=600)

Out[59]:

Existen tareas dentro del aprendizaje profundo que no sería posible de procesar para una
única unidad de procesamiento. La cuestión es: ¿ Comó podemos abordar este problema de
un modo más eficaz?
La solución evidente a este problema es utilizar las GPU, que son verdaderos caballos de
batalla. Puedes pensar en una tarjeta gráfica como un pequeño grupo de ordenadores dentro
de tu ordenador. Otra ventaja es que las GPU´s modernas son relativamente económicas en
comparación con los CPU´s de vanguardia, como veremos en la siguiente tabla.

In [61]: Image(filename='D:/Python/1. Nivel I/0/imagenes/cpu_vs_gpu2.png', width=600)

Out[61]:

Por el 70% del precio de un CPU de alta gama podemos tener un GPU con 450 veces más
nucleos y que es capaz de realizar unas 15 veces más calculos con decimales por segundo.
Así, ¿Qué nos impide utilizar la GPU para nuestras tareas de aprendizaje automático?

Puede hacer click en el siguiente enlace

El desafio es que describir un código de aprendizaje automático en una GPU no estan


snecillo como ejecutar código en Python. Existen paquetes especiales como CUDA y OPENCL,
que nos permite apuntar al GPU. Sin embargo, no es el entorno más cómodo. Para eso existe
TensorFlow.

¿Qué es TensorFlow?
Es una interfaz de progrmación multiplataforma y escalable para implementar y ejecutar
algoritmos de aprendizaje automático, incluyendo wrappers preparados para aprendizaje
profundo.

Para mejorar el rendimiento de los modelos de aprendizaje automático de entrenamiento,


TensorFlow permite la ejecución tanto en la CPU como en la GPU. Sin embargo, ñas mejores
capacidades de rendimiento se pueden descubrir al utilizar la GPU.

In [63]: Image(filename='D:/Python/1. Nivel I/0/imagenes/tensorflow.png', width=600)


Out[63]:

Numba y NumbaPro utilizan la compilación para acelerar las aplicaciones escritas


directamente en Python y algunas anotaciones. NumbaPro también le permite utilizar la
potencia de su unidad de procesador de gráficos (GPU).

PyCUDA esto le permite escribir código que se ejecutará en el GPU en lugar de su CPU y, por
lo tanto, es ideal para aplicaciones con muchos cálculos. Funciona mejor con problemas que
se prestan a ser paralelizados y necesitan poca información en comparación con el número
de ciclos informáticos requeridos. Un ejemplo es estudiar la solidez de sus predicciones
calculando miles de resultados diferentes basados en un solo estado de inicio.

H2O ofrece implementaciones paralelas de muchos algoritmos de aprendizaje automático


supervisados y no supervisados, como modelos lineales generalizados, XGBoost,
ramdonforest, redes neuronales, Naive Bayes, CoxProportional Hazards, K-Means, PCA,
Word2Vec, así como un algoritmo de machine learning completamente automático (AutoML).

In [57]: Image(filename='D:/Python/1. Nivel I/0/imagenes/h2o.png', width=600)


Out[57]:

Otras librerías a considerar:


Cython o C para Python: esto trae el lenguaje de programación C a Python. C es un lenguaje
de nivel inferior, por lo que el código está más cerca de lo que la computadora finalmente
usa (código de bytes). Cuanto más cercano sea el código a bits y bytes, más rápido se
ejecutará. Una computadora también es más rápida cuando conoce el tipo de una variable
(llamada escritura estática). Python no fue diseñado para hacer esto, y Cython te ayuda a
superar este déficit.

Blaze le brinda estructuras de datos que pueden ser más grandes que la memoria principal
de su computadora, lo que le permite trabajar con grandes conjuntos de datos.

Dispy e IPCluster: estos paquetes le permiten escribir código que se puede distribuir en un
grupo de computadoras.

PP-Python se ejecuta como un proceso único de forma predeterminada. Con la ayuda de PP,
puede paralelizar los cálculos en una sola máquina o en clústeres.

4.3. Big data


Primeros pasos: entender Apache Hadoop
Es un Sistema distribuido que permite realizar procesamiento de grandes volúmenes de datos
a través de clúster, fácil de escalar.

A grandes rasgos se puede decir que Hadoop está compuesto por dos partes

1. Se ocupa del almacenamiento de datos de distintos tipos (HDFS)


2. Realiza las tareas de procesamiento de los datos de manera distribuida (MapReduce)

In [52]: Image(filename='D:/Python/1. Nivel I/0/imagenes/arquitectura_basica_Hadoop.png',

Out[52]:

In [54]: Image(filename='D:/Python/1. Nivel I/0/imagenes/Arquitectura-_Hadoop.png', width

Out[54]:

Hadoop esta basado en una arquitectura maestro esclavo O Master Slave

• El maestro en HDFS se les conoce como NameNode y se encargan de conocer como se


encuentran los datos almacenados por el cluster
• Los esclavos en HDFS se les conoce como DataNodes y se encargan de almacenar
físicamente los datos en el cluster

In [55]: Image(filename='D:/Python/1. Nivel I/0/imagenes/Hadoop.png', width=600)


Out[55]:

Pydoop y Hadoopy conectan Python con Hadoop, un framework. común de big data.

Facebook permite que HDFS almacene y extraiga estos enormes datos, y utiliza Python como
el lenguaje de fondo para la mayoría de sus aplicaciones de Procesamiento de imágenes,
como el cambio de tamaño de imágenes, la extracción de imágenes faciales, etc.

Quora gestiona una increíble cantidad de datos textuales utilizando Hadoop, Apache Spark y
varias otras tecnologías de almacenamiento de datos. Dado que el back-end de Quora se
desarrolla en Python; Este lenguaje se utiliza para interactuar con el HDFS. Por lo tanto,
Quora usa Hadoop con Python para extraer la Pregunta después de la búsqueda o
sugerencia.

Amazon tiene una plataforma líder que sugiere productos preferibles a los usuarios
existentes en función de su patrón de búsqueda y compra. Su motor de aprendizaje
automático está construido con Python e interactúa con su sistema de base de datos, es
decir, Hadoop Ecosystem. Estas dos tecnologías funcionan en coherencia para ofrecer un
sistema de recomendación de productos de primera clase

In [64]: Image(filename='D:/Python/1. Nivel I/0/imagenes/python_hadoop.png', width=600)


Out[64]:

PySpark conecta Python y Spark, un marco de big data en memoria. Apache Spark es un
marco de código abierto popular que garantiza el procesamiento de datos a la velocidad del
rayo y admite varios idiomas como Scala, Python, Java y R.

In [65]: Image(filename='D:/Python/1. Nivel I/0/imagenes/pyspark.png', width=600)

Out[65]:

Ir a inicio

También podría gustarte