Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Coursera 2

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 81

Introducción al curso

¡Bienvenido al curso! 
Has comenzado una de las más completas revisiones de las herramientas de la ciencia de los
datos 
que encontrarás en Internet actualmente. 
Esto no quiere decir que cubramos todas y cada una de las herramientas, pero más adelante en
el curso 
introduciremos una lista comprensiva de las tares que un científico de datos necesita realizar y te
daremos 
las dos o tres principales note comerciales y de código abierto disponibles para completarlas. 
De igual forma explicamos cómo las herramientas se entrelazan en funcionalidad, cuáles son sus
pros y contras y cómo estas 
herramientas pueden abordar todas las tuberías de datos de la ciencia de los datos. 
Vamos a comenzar con los datos. 
Los datos son obviamente importantes para los científicos de datos. 
En este curso, te mostraremos cómo gestionar, extraer, transformar, analizar y visualizar 
los datos. 
Ahora, podrías ser capaz de sobrevivir a la ciencia de los datos son ningún conocimiento en
programación si usas el 
conjunto de herramientas adecuadas. 
Sin embargo, recomendamos que te familiarices con la programación y los marcos de 
programación relacionados con la ciencia de los datos. 
Para ayudarte, te presentaremos los lenguajes 
y marcos de programación más usados en la ciencia de los datos. 
Bien, dicho esto, hay demasiadas opciones de automatización disponibles en las ultimas
herramientas que un científico de datos 
pueda usar. 
En este curso, explicaremos cómo hacer uso de dichas herramientas para ahorrar tiempo y
descubrir 
la inspiración. 
La programación visual está disponible en muchas herramientas. 
En este curso, aprenderás como la programación visual puede ser usada para acelerar el tiempo
de 
desarrollo y ayuda a los no programadores a entrar en el campo de la ciencia de los datos. 
El software de código abierto es el líder en el campo de la ciencia de los datos, pero el Costo Total
de Propiedad, 
o “TCO”; a veces puede ser más altos para los software de código abierto. Debido a los costos de
configuración, personalización 
y mantenimiento. 
Como resultado, el software comercial también tiene su lugar, especialmente desde la nueva
generación 
de software comerciales de la ciencia de los datos que aprovecha el software de código abierto y
los estándares abiertos. 
Lo cual facilita la migración entre las herramientas y puede reducir el TCO. 
En este curso, te presentaremos tanto los software de código abierto así como los comerciales y 
señalaremos sus fortalezas y debilidades para la ciencia de los datos. 
De igual forma te mostraremos las formas de aprovechar sus fortalezas. 
Finalmente, te mostraremos cómo la computación en la nube puede ser usada para acelerar y
facilitar 
el trabajo de los científicos de datos. 
Te presentaremos las herramientas basadas en la nube más nuevas y comúnmente usadas para
la ciencia de los datos. 
Además de las lecciones, este curso tiene numerosos laboratorios para que te familiarices con el
material 
y también obtengas experiencia en las prácticas. 
También hay múltiples pruebas para evaluar tu aprendizaje. 
¡No queda más nada por decir, así que empecemos! 
Estamos muy contentos de tenerte con nosotros para comenzar tu viaje en la ciencia de los
datos. 
Si tienes algún problema con el material del curso, no dudes en contactarnos 
en el foro de discusión. 
¡Así que vamos a comenzar!

Lenguajes de la Ciencia de los Datos


Los Lenguajes de la Ciencia de los Datos. 
Para cualquiera que este comenzando su viaje en la ciencia de los datos, la variedad de opciones
técnicas 
pueden ser abrumadoras. Hay una gran cantidad impresionante de opciones cuando se trata de
lenguajes de programación. 
Cada uno tiene sus propias fortalezas y debilidades y no hay una respuesta correcta a la
pregunta 
de cual deberías aprender primero. La respuesta a esa pregunta depende en gran medida a tus
propias necesidades, 
los problemas que intentas resolver o para quien los estas resolviendo. 
Python, R, y SQL son los lenguajes que te recomendamos que consideres como primeras
opciones. 
Pero hay muchos otros que tienen sus propias fortalezas y características interesantes. 
Scala, Java, C++ y Julia son algunos de los más populares. 
Javascript, PHP, Go, Ruby y Visual Basic todos estos tienen también sus propios casos de uso. 
El lenguaje que escojas para aprender dependerá de las cosas que necesites lograr y de los 
problemas que necesites resolver. Esto también dependerá de la compañía en la que trabajes el
rol que 
tengas y la edad de tu aplicación actual. Exploraremos las respuestas a esta pregunta 
a medida que profundicemos en los lenguajes populares en la industria de la ciencia de los
datos. 
Hay muchos roles disponibles para las personas que están interesadas en involucrase en 
la ciencia de los datos. Analista de Negocios 
Ingeniero de Base de Datos, Analista de Datos, 
Ingeniero de Datos, Científico de Datos, 
Científico de Investigación, Ingeniero de Software, 
Gestor de Producto Estadísticos, 
Gestor de Proyecto y muchos más. 
Profundicemos un poco en lo que aprenderemos en la Lección 1. Nos enfocaremos en los 
tres principales lenguajes de la ciencia de los datos: Python, R y SQL donde cada uno de los
cuales tienen sus propias lecciones. Después 
pasaremos a resaltar otros lenguajes notables y lo que los hace especiales. ¡Luego, 
terminaremos con una pequeña prueba para que demuestres tus conocimientos! Aquí está lo
que discutiremos: 
Python R 
SQL, otros lenguajes dignos de tener en cuenta en la Ciencia 
de los Datos y pruebas prácticas
Introducción a Python
En este video, revisaremos las características del alto nivel del lenguaje de programación de
Python. 
Python es un lenguaje muy poderoso. 
Es el lenguaje de programación más popular para la ciencia de los datos. 
De acuerdo a la Encuesta Kaggle de la Ciencia de los Datos y Aprendizaje Automático, el 75% de
los 
10,000 encuestados alrededor del mundo reportaron que usan Python con regularidad. 
Glassdoor informó que en el año 2019 más del 75% de los puestos de la ciencia de los datos
listados incluían 
Python en sus descripciones de cargo. 
Cuando se les preguntó cuál lenguaje debería aprender primero un aspirante a científico de
datos, la mayoría de los científicos de datos 
contestaron Python. 
Probablemente estés pensando, ¿Por qué Python es tan popular? 
Bien, comencemos con las personas que usan Python. 
Si ya sabes cómo programar, entonces Python es excelente para ti porque usa una sintaxis, clara 
y legible. 
Puedes hacer muchas de las cosas que estás acostumbrado a hacer en otros lenguajes de
programación pero 
con Python puedes hacerlos usando menos códigos. 
Si quieres aprender a programar, este es un gran lenguaje para comenzar debido a la enorme 
comunidad global y a la gran cantidad de documentación. 
De hecho, muchas encuestas realizadas en el año2019, revelaron que más del 80% de los
profesionales de datos 
alrededor del mundo usan Python. 
Python es útil para muchas situaciones, incluyendo la ciencia de los datos, inteligencia artificial,
aprendizaje automático, desarrollo 
web y dispositivos IoT como Raspberry Pi. 
Las grandes organizaciones que usan Python incluyen IBM, Wikipedia, Google, Yahoo!, CERN, 
NASA, Facebook, Amazon, Instagram, Spotify, y Reddit. 
Python es un poderoso lenguaje de programación de propósito general con el que se pueden
hacer demasiadas cosas. 
Es ampliamente soportado por una comunidad global y dirigido por la Python Software
Foundation.
Reproduce el video desde :2:13 y sigue la transcripción2:13
Python es un lenguaje de programación de propósito general de muy alto nivel que puede ser
aplicado a diferentes 
clases de problemas.
Reproduce el video desde :2:20 y sigue la transcripción2:20
Este tiene una gran librería estándar la cual proporciona las herramientas adecuadas para tareas
diferentes, incluyendo 
pero no limitado a las bases de datos, automatización, web scraping, procesamiento de texto,
procesamiento de imágenes, 
aprendizaje automático y análisis de datos.
Reproduce el video desde :2:36 y sigue la transcripción2:36
Para la ciencia de los datos, puedes usar las librerías de computación científica de Python tales
como Pandas, NumPy, 
SciPy, y Matplotlib.
Reproduce el video desde :2:45 y sigue la transcripción2:45
Para la inteligencia artificial, tiene TensorFlow, PyTorch, Keras, y Scikit-learn.
Reproduce el video desde :2:52 y sigue la transcripción2:52
Python también puede ser usado para el Procesamiento del Lenguaje Natural o por sus siglas en
inglés (NLP) utilizando Natural Language 
Toolkit (NLTK). 
Otro punto de venta atractivo es la comunidad Python, la cual tiene una historia muy bien
documentada 
de pavimentar el camino para la diversidad y los esfuerzos de inclusión en la industria de la
tecnología como un conjunto. 
El lenguaje de Python tiene un código de conducta ejecutado por la Python Software Foundation 
la cual busca garantizar la seguridad y la inclusión de todos, tanto en las comunidades Python en
línea como 
en persona. 
De igual forma hay comunidades como lo es PyLadies la cual busca la forma de crear espacios
para que las personas interesadas 
en Python aprendan en entornos seguros e inclusivos. 
PyLadies es un grupo internacional de mentores que se enfoca en ayudar a más mujeres a
convertirse en 
participantes activas y líderes en la comunidad de código abierto de Python.

Introducción al Lenguaje R
En este video, discutiremos una breve visión general acerca del lenguaje de programación R. 
Después de nuestro último video acerca de Python, donde discutimos su amplia adopción,
puede que te estés preguntando 
por qué deberías considerar el aprendizaje de cualquier otro lenguaje. 
Bien, según los resultados de la Encuesta Kaggle de la Ciencia de los Datos del año 2019, la cual
tuvo más de 
10k encuestados alrededor del mundo, ¡el aprender hasta 3 lenguajes puede aumentar tu
salario! 
Y el lenguaje R tiene mucho que ofrecerte. 
Así como Python, R es gratuito, pero es un Proyecto GNU – en vez de ser de código abierto, 
es en realidad software libre. 
Por lo que si Python es de código abierto R es software libre, ¿cuál es la diferencia? 
Bueno, tanto el código abierto como el software libre generalmente se refieren al mismo
conjunto de licencias. 
Muchos proyectos de código abierto usan la Licencia Pública General GNU, por ejemplo. 
Tanto el código abierto como el software libre soportan la colaboración. 
En la mayoría de los casos (pero no en todos), estos términos pueden ser usados
intercambiablemente. 
La Open Source Initiative (OSI) apoya el código abierto mientras que la Free Software
Foundation 
(FSF) defiende el software libre. 
El código abierto se enfoca más en las empresas, mientras que el software libre se enfoca más en
un conjunto de 
valores. 
Regresemos a por qué deberías aprender Lenguaje R. Porque este es un proyecto de software
libre, puedes usar el 
lenguaje de la misma forma que contribuyes al código abierto y permite la colaboración pública 
al igual que el uso privado y comercial. 
Además, el lenguaje R es otro lenguaje soportado por una amplia comunidad mundial de
personas apasionadas 
por hacer posible el uso del lenguaje para poder resolver grandes problemas. 
¿Para quién es el lenguaje R? 
Es muy usado por estadísticos, matemáticos y mineros de datos para poder desarrollar los
software 
estadísticos, gráficos y análisis de datos. 
La sintaxis orientada a los arrays del lenguaje facilita la traducción de las matemáticas al código, 
especialmente para alguien sin o con tan solo un poco de conocimiento de programación. 
De acuerdo a la Encuesta Kaggle de la Ciencia de los Datos y Aprendizaje Automático, la mayoría
de las personas aprende el lenguaje R aunque 
ya tengan unos cuantos años en su carrera de la ciencia de los datos, pero sigue siendo un
lenguaje muy cómodo para aquellos 
que no tiene experiencia con los software de programación. 
El lenguaje R es muy popular en el mundo académico, pero entre las empresas que usan R están
IBM, Google, Facebook, Microsoft, 
Bank of America, Ford, TechCrunch, Uber, y Trulia. 
● R se ha convertido en el mayor repositorio de conocimiento estadístico al nivel mundial. 
● A partir del año 2018, R tiene más de 15,000 paquetes públicamente lanzados, haciendo
posible 
realizar complejos análisis exploratorios de datos. 
● R se integra muy bien con otros lenguajes de computación, como lo son C++, Java, C, .Net y 
Python. 
● Operaciones matemáticas convencionales como lo son la multiplicación de matrices la cuales
funcionan 
desde la base. 
● R posee más facilidades de programación orientadas a los objetos en comparación de la
mayoría de los lenguajes de computación 
estadística. 
Existen muchas formas de conectarse con otros usuarios de R a nivel mundial. 
Las comunidades como user!, WhyR?, SatRdays y R-Ladies son fabulosas para poder conectarse. 
Y también puedes echar un vistazo a los sitios webs de R project para saber más acerca de las
conferencias y eventos R.

Introducción a SQL
En este video, vamos a echar un vistazo de alto nivel a SQL. 
SQL es un poco diferente de los otros lenguajes que hemos discutido hasta ahora. 
Primero que nada, se pronuncia formalmente “ess cue el”, aunque algunas personas lo dicen
“sequel.” 
Aunque las siglas significan “Structured Query Language o Lenguaje de consulta estructurada”,
muchas personas no consideran 
que SQL sea como otros lenguajes de desarrollo de software porque es un lenguaje no
Spytorchprocedimental 
y su alcance está limitado a la consulta y gestión de datos. 
Aunque no es un lenguaje de “la ciencia de los datos” en sí, ¡los científicos de los datos
normalmente lo utilizan ya que es 
es muy simple y poderoso! 
Otros hechos importantes acerca de SQL: es mucho más antiguo que Python y R, por al menos
unos 20 
años, ya que apareció por primera vez en el año 1974. 
Y, ¡SQL fue desarrollado en IBM! 
Este lenguaje es muy útil en el manejo de datos estructurados, es decir, los datos incorporan
relaciones 
entre las entidades y las variables. 
SQL fue diseñado para la gestión de datos en bases de datos relacionales. 
Aquí podrás ver un diagrama el cual muestra la estructura general de una base de datos
relacional. 
Una base de datos relacional está formada por colecciones de tablas de dos dimensiones,
ejemplo, los conjuntos de datos 
y las hojas de cálculo de Microsoft Excel. 
Cada una de estas tablas entonces está formada por un número fijo de columnas y un número
cualquiera de filas. 
¡PERO! 
Aunque SQL fue originalmente desarrollado para su uso con bases de datos relacionales, ya que
es 
tan generalizado y fácil de utilizar han sido desarrolladas interfaces SQL para muchos NoSQL y
grandes repositorios 
de datos. 
El lenguaje SQL esta subdividido en varios elementos de lenguaje, incluyendo las clausulas,
expresiones, 
pronósticos, consultas y declaraciones. 
Entonces ¿qué es lo que hace tan grandioso a SQL? 
Saber SQL te ayudará a realizar muchos trabajos diferentes en la ciencia de los datos, incluyendo
empresas y 
análisis de datos, es algo necesario para la ingeniería de datos. 
Cuando las operaciones son realizadas con SQL, accedes a los datos directamente. 
No existe la necesidad de copiarlos de antemano. 
Esto puede acelerar considerablemente las ejecuciones del flujo de trabajo. 
SQL es el intérprete entre tú y la base de datos. 
SQL está bajo el Instituto Nacional Estadounidense de Estándares o los estándares “ANSI” por lo
que si aprendes 
SQL y lo usas con una base de datos, serás capaz de aplicar fácilmente ese conocimiento de SQL 
a otras bases de datos. 
Existen muchas bases de datos SQL distintas, incluyendo MySQL, IBM Db2, PostgreSQL, Apache 
OpenOffice Base, SQLite, Oracle, MariaDB, Microsoft SQL Server y muchas más. 
La sintaxis de SQL que escribes podría cambiar un poco basado en el sistema de gestión de bases
de datos 
relacionales que uses. 
Si quieres aprender SQL lo mejor que deberías hacer es concentrarse en una base de datos
relacional 
específica y luego conéctate a la comunidad para esa plataforma en específico. 
¡De igual forma existen muchos cursos de introducción a SQL disponibles!

Otros Lenguajes
Hasta ahora, hemos discutido acerca de Python, R y SQL. 
En este video, discutiremos algunos otros lenguajes que tienen casos de uso convincentes para
la ciencia de los datos. 
Bueno, entonces indiscutiblemente Python, R y SQL son los tres lenguajes más populares que
utilizan los científicos 
de datos. 
Pero, hay muchos otros lenguajes que también valen la pena que te tomes un tiempo para
considerar 
cual lenguaje usar para resolver un problema particular de la ciencia de los datos. 
Scala, Java, C++ y Julia son probablemente los lenguajes más tradicionales de la ciencia de los
datos en 
esta diapositiva. 
¡Pero JavaScript, PHP, Go, Ruby, Visual Basic y otros también han encontrado su lugar en la 
comunidad de la ciencia de los datos! 
No profundizaré tanto en cada uno de estos lenguajes, pero mencionaré algunos aspectos
resaltantes. 
Java es un lenguaje de programación orientado a objetos de propósito general probado y
verdadero. 
Este ha sido ampliamente adoptado en el espacio empresarial y está diseñado para ser rápido y
escalable. 
Las aplicaciones Java son compiladas en código de bytes y se ejecutan en la Máquina Virtual
Java o “JVM” 
Algunas herramientas notables de la ciencia de datos construidas con Java incluyen Weka para la
minería de datos, Java-ML, 
el cual es una librería de aprendizaje automático, Apache MLlib el cual hace que el aprendizaje
automático sea escalable 
y Deeplearning4j para el aprendizaje profundo. 
Apache Hadoop es otra aplicación basada en Java. 
Esta gestiona el procesamiento y almacenamiento de datos para las grandes aplicaciones de
datos que son ejecutadas en sistemas 
clúster. 
Scala es un lenguaje de programación de uso general que proporciona el soporte a la
programación funcional 
y a un sistema de tipo estático fuerte. 
Muchas de las decisiones de diseño en la construcción del lenguaje Scala fueron hechas para
responder a las 
criticas de Java. 
Scala igualmente es interoperable con Java, ya que se ejecuta en JVM. 
El nombre “Scala” es una combinación de “scalable” y “language”. 
Este lenguaje está diseñado para crecer junto con las demandas de los usuarios. 
En la ciencia de los datos, el programa con mayor popularidad construido utilizando Scala es
Apache Spark. 
Spark es un sistema de computación en clúster rápido y de propósito general. 
Este proporciona APIs que hacen más fácil la escritura de los trabajos paralelos y un motor
optimizado que soporta 
los gráficos de computación general. 
Spark incluye Shark el cual es un motor de consulta, MLlib, para el aprendizaje automático,
GraphX, para el procesamiento 
de gráficos y Spark Streaming. 
Apache Spark fue diseñado para ser más rápido que Hadoop. 
C++ es lenguaje de programación de propósito general. 
Es una extensión del lenguaje de programación C o “C con Clases”. 
C++ mejora la velocidad de procesamiento, permite la programación de Sistema y también
permite un mejor control 
sobre la aplicación de software. 
Hay muchas organizaciones que usan Python u otros lenguajes de alto nivel para el análisis de
datos y 
las tareas de exploración aún siguen confiando en C++ para desarrollar programas que alimentan
esos datos a los clientes 
en tiempo real. 
Para la ciencia de los datos, una librería popular de aprendizaje profundo para el flujo de datos
llamada TensorFlow fue 
construida con C++. 
Pero mientras que C++ es la base de TensorFlow, es ejecutada en una interfaz de Python, por lo
cual no 
necesitas saber C++ para poder usarlo. 
MongoDB, una base de datos NoSQL para la gestión de grandes volúmenes de datos, fue
construida con C++. 
Caffe es un repositorio de algoritmos de aprendizaje profundo construido con C++, Python y
MATLAB bindings. 
Una tecnología central para la World Wide Web, JavaScript es un lenguaje de propósito general
que 
se ha extendido más allá del aprendiza con la creación de Node.js y otros alcances del server
side. 
Javascript NO está relacionado con el lenguaje Java. 
Para la ciencia de los datos, la implementación más popular es sin duda alguna TensorFlow.js. 
TensorFlow.js hace posible el aprendizaje automático y el aprendizaje profundo bien sea en
Node.js o 
en el navegador. 
TensorFlow.js igualmente fue adoptado por otras librerías de código abierto incluyendo brain.js
y machinelearn.js. 
El Proyecto R-js es otra gran implementación de JavaScript para la ciencia de los datos. 
R-js ha reescrito las especificaciones de algebra lineal del lenguaje R en Typescript. 
Esta reescritura permitirá una base para que otros proyectos implementen marcos de trabajo de 
base matemáticas más poderosos como lo son Numpy y SciPy de Python. 
Typescript es un super conjunto de JavaScript. 
Julia fue diseñado en el MIT para el análisis numérico de alto desempeño y la ciencia
computacional. 
Permite un desarrollo rápido como Python o R, mientras produce programas que se ejecutan tan 
rápido como los programas de C o Fortran. 
Julia esta compilado lo que quiere decir que el código es ejecutado directamente en el
procesador como código 
ejecutable y llama a las librerías de C, Go, Java, MATLAB, R, Fortran y Python e igualmente ha
refinado el paralelismo. 
El lenguaje Julia es relativamente nuevo, ya que fue escrito en el año 2012, pero es muy 
prometedor para el futuro impacto en las industrias de la ciencia de los datos. 
JuliaDB es particularmente una aplicación útil de Julia para la ciencia de los datos. 
Es un paquete para trabajar con conjuntos de datos grandes y persistentes. 
Hasta ahí profundizaremos con respecto a los muchos lenguajes que son usados para resolver
los problemas de la ciencia 
de los datos. 
Si tienes experiencia con algún lenguaje en particular, te recomiendo que hagas una búsqueda
en la web para ver que 
podría ser posible en términos de usarlo en la ciencia de los datos. 
¡Podrías estar sorprendido de las posibilidades!

Categorias de las Herramientas de la


Ciencia de los Datos
Las herramientas de código abierto están disponibles para diversas tareas de la ciencia de los
datos. 
En este video, veremos las diferentes tareas de la ciencia de los datos. 
En los siguientes videos veremos las herramientas de código abierto más usadas 
para esas tareas. 
Las herramientas más importantes se cubren a lo largo de este curso. 
La Gestión de Datos es el proceso de persistencia y recuperación de datos. 
La Integración y Transformación de Datos, comúnmente conocida como Extracción,
Transformación y Carga 
o por sus siglas en inglés “ETL”, es el proceso de recuperación de datos de sistemas de gestión de
datos remotos. 
La transformación y carga de los datos en un Sistema local de gestión de datos también es parte
de la 
Integración y Transformación de Datos. 
La Visualización de Datos es parte de un proceso inicial de exploración de datos, así como parte 
de un producto final. 
La Construcción de Modelo es el proceso de creación de un modelo de aprendizaje automático o
aprendizaje profundo 
usando un algoritmo apropiado con muchos datos. 
El despliegue del modelo permite poner a disposición a las aplicaciones de terceros un modelo
de aprendizaje automático 
o de aprendizaje profundo. 
El seguimiento y evaluación de los modelos, asegura un control continuo de la calidad del
rendimiento de los 
modelos desplegados. 
Estas verificaciones son para la exactitud, equidad y la robustez del adversario. 
La gestión de activos de código usa el control de versiones y otras características de
colaboración para facilitar 
el trabajo en equipo. 
La gestión de activos de datos implica los mismos componentes de versiones y de colaboración
en los datos. 
La gestión de activos de datos a su vez apoya la replicación, copia de seguridad y la gestión de
los derechos de acceso. 
Los entornos de desarrollo, comúnmente conocidos como Entornos de Desarrollo Integrado o
“IDEs”, 
son herramientas que ayudan al científico de datos a implementar, ejecutar, probar y desplegar 
su trabajo. 
Los entornos de ejecución son herramientas en las que se realiza el pre procesamientos de datos,
la capacitación de modelos 
y el despliegue. 
Finalmente, hay disponible una herramienta visual completamente integrada que cubre todos
los 
componentes de la herramienta previa, bien sea parcial o por completo. 
Con esto concluye este video. 
En el siguiente video empezaremos a ver las herramientas de código abierto para tareas de la
ciencia de los datos.

Herramientas de Código Abierto para la


Ciencia de los Datos - Parte 1
En la parte uno de esta serie de dos partes, cubriremos la gestión de datos, integración de datos
de código abierto, 
transformación y las herramientas de visualización. 
Las herramientas de gestión de datos de código abierto más usadas son las bases de datos
relacionales como 
MySQL y PostgreSQL; NoSQL, MongoDB Apache CouchDB y Apache Cassandra 
y las herramientas basadas en archivos como Hadoop File System o los sistemas de archivos en
la nube como Ceph. 
Por último, Elasticsearch es principalmente usado para almacenar datos de texto y crear un
índice de búsqueda para 
una rápida recuperación de documentos. 
La tarea de integración de datos en el mundo clásico de almacenamiento de datos es llamado 
ETL que según sus siglas quiere decir “extraer, transformar y cargar”. 
Hoy en día los científicos de datos generalmente proponen el término “ELT” – Extraer, Cargar y
Transformar “ELT” 
resalta el hecho de que los datos son volcados en algún lugar y el ingeniero de datos o el mismo
científico de datos 
es el responsable de los datos. 
Hay otro termino para este proceso que ha surgido actualmente: “refinamiento y limpieza de
datos”. 
Estas son las herramientas de integración y transformación de datos de código abierto más
usadas: 
Apache AirFlow, originalmente creada por AirBNB; KubeFlow la cual permite ejecutar las tuberías
de datos 
de la ciencia de los datos en Kubernetes; Apache Kafka la cual se originó de LinkedIn, 
Apache Nifi la cual ofrece un editor visual amigable, 
Apache SparkSQL (el cual te permite usar ANSI SQL y escalar para computar clústeres de 
1000s de nodos) y NodeRED el cual también proporciona un editor visual. 
NodeRED consume tan pocos recursos que incluso funciona en pequeños dispositivos como
Raspberry 
Pi. 
Bueno, ahora presentaremos las herramientas de visualización de datos de código abierto más
usadas. 
Debemos distinguir entre las librerías de programación en las que debes usar el código y las
herramientas 
que contienen una interfaz de usuario. 
Las librerías más populares son cubiertas en los próximos videos. 
Pixie Dust es una librería, pero viene con una interfaz de usuario la cual ayuda enormemente a
cualquiera quien 
necesite graficar en Python. 
Hue tiene un enfoque similar el cual puede crear visualizaciones a partir de consultas en SQL. 
Kibana, es una aplicación web de exploración y visualización de datos está limitada a
Elasticsearch 
(el proveedor de datos). 
Finalmente, Apache Superset es una aplicación web de exploración y visualización de datos. 
El despliegue del modelo es extremadamente importante. 
Una vez que has creado un modelo de aprendizaje automático capaz de predecir algunos
aspectos claves del 
futuro, deberías hacer que ese modelo sea consumible por otros desarrolladores luego
convertirlo a una API. 
Apache PredictionIO actualmente solo soporta modelos Apache Spark ML para el despliegue
pero 
que sea soportada por cualquier tipo de librería está en camino. 
Seldon es un producto interesante ya que soporta todos los marcos de trabajo concluyendo 
TensorFlow, Apache SparkML, R, y scikit-learn. 
Seldon puede funcionar en Kubernetes y Redhat OpenShift. 
Otra manera de desplegar los modelos de SparkML es utilizando MLeap. 
Finalmente, TensorFlow puede servir con cualquiera de sus modelos utilizando el servicio de
TensorFlow. 
Puedes desplegarlo en un dispositivo integrado como Raspberry Pi o un teléfono inteligente
usando TensorFlow 
Lite e incluso desplegarlo en un navegador web usando TensorFlow dot JS. 
El monitoreo del modelo es otro paso crucial. 
Una vez que has desplegado un modelo de aprendizaje automático, es necesario hacer un
seguimiento de su desempeño de predicción 
a medida que los nuevos datos llegan con el fin de mantener los modelos desactualizados. 
A continuación, encontrarás algunos ejemplos de herramientas de seguimiento de modelos: 
ModelDB es una base de metadatos de modelos de máquinas donde la información sobre los
modelos puede ser almacenada y 
consultada. 
Nativamente soporta Apache Spark ML Pipelines y scikit-learn. 
Una herramienta genérica multi propósitos llamada Prometheus es también usada ampliamente
para el seguimiento del modelo de aprendizaje automático, 
aunque no está hecha específicamente para este propósito. 
El desempeño del modelo no es medido exclusivamente con respecto a la precisión. 
Los modelos de tendencias contra grupos protegidos como el género o la raza también son
importantes. 
El kit de herramientas de código abierto de IBM AI Fairness 360 hace precisamente esto. 
Detecta y mitiga las tendencias en los modelos de aprendizaje automático. 
Los modelos de aprendizaje automático, especialmente los modelos de aprendizaje profundo
basados en las redes neuronales que pueden ser objeto de ataques adversos 
donde un atacante trata de engañar al modelo con datos manipulados o 
manipulando el propio modelo. 
El 
IBM Adversarial Robustness 360 Toolbox puede ser usado para detectar la vulnerabilidad de los
ataques 
adversarios y ayuda a hacer mucho más robusto el modelo. 
Los modelos de aprendizaje automático frecuentemente son considerados como una caja negra
que aplica algo de “magia” 
misteriosa. 
El kit de herramientas IBM AI Explainability 360 hace el 
proceso de aprendizaje automático mas entendible al encontrar ejemplos similares dentro del
conjunto de datos 
que puede ser presentado a un usuario para su comparación de forma manual. 
El kit de herramientas IBM AI Explainability 360 también puede ilustrar la capacitación de un
modelo de aprendizaje 
automático más simple al explicar cómo las diferentes variables de entrada afectan la decisión
final 
del modelo. 
Las opciones de las herramientas de gestión de activos de código han sido ampliamente
simplificadas: 
Para la gestión de activos de código – también conocida como gestión de versiones o control de
versiones 
– Git es hoy en día el estándar. 
Han surgido múltiples servicios para soportar a Git, siendo claramente el más destacado GitHub, 
el cual proporciona alojamiento para la gestión de versiones de desarrollo de software. 
El segundo puesto es definitivamente para GitLab el cual ha tenido la ventaja de ser una
plataforma completamente 
de código abierto que puedes alojar y administrar tú mismo. 
Otra opción interesante es Bitbucket. 
La gestión de activos de datos también conocida como gobernanza de datos o linaje de datos es
otra parte 
crucial de la ciencia de los datos a nivel empresarial. 
Los datos tienen que ser versionados y anotados con metadatos. 
Apache Atlas es una herramienta que soporta esta tarea. 
Otro proyecto interesante es ODPi Egeria el cual es gestionado a través de Linux Foundation y 
es un entorno abierto. 
Este ofrece un conjunto de APIs abiertas, tipos y protocolos de intercambio que los repositorios
de metadatos usan para 
compartir e intercambiar los datos. 
Y por último, Kylo que es una plataforma de software de código abierto para la gestión de Data
Lake que provee 
un amplio soporte para la gran variedad de tareas de gestión de activos de datos. 
Con esto concluimos la primera parte de esta serie de dos partes. 
Ahora continuemos con la segunda parte.

Herramientas de Código Abierto para la


Ciencia de los Datos - Parte 2
Bienvenido a la segunda parte de esta serie. 
En esta sección, vamos a cubrir el entorno de desarrollo, la integración de datos de código
abierto, 
transformación y herramientas de visualización. 
Uno de los entornos de desarrollo actualmente más populares que los científicos de datos están
utilizando 
es “Jupyter”. 
Jupyter surgió primeramente como una herramienta para la programación interactiva en
Python, ahora soporta más de 
cien lenguajes de programación por medio de “kernels”. 
Kernels no deberían ser confundidos con los kernels del sistema operativo. 
Los Jupyter kernels están encapsulando los distintos interpretes interactivos para los diferentes 
lenguajes de programación. 
Una propiedad clave de Jupyter Notebooks es la habilidad de unificar la documentación, código,
salida del 
código, los interpretes de comandos y las visualizaciones en un solo documento. 
JupyterLab es la siguiente generación de Jupyter Notebooks y a largo plazo reemplazará 
a Jupyter Notebooks. 
Los cambios a nivel de arquitectura que se están introduciendo en JupyterLab hacen que
Jupyter sea más moderno y 
modular. 
Desde la perspectiva del usuario, la principal diferencia introducida por JupyterLab es la
habilidad de 
abrir distintos tipos de archivos, incluyendo Jupyter Notebooks, datos y terminales. 
Entonces puedes arreglar estos archivos en el canvas. 
Aunque Apache Zeppelin ha sido completamente reimplantado, este está inspirado por Jupyter
Notebooks y proporciona 
una experiencia similar. 
Un elemento clave es la capacidad de graficar integrado. 
En Jupyter Notebooks, es necesario el uso de librerías externas en Apache Zeppelin 
y el graficar no requiere de un código. 
También puedes extender estas capacidades mediante el uso de librerías adicionales. 
RStudio es uno de los entornos de desarrollo más antiguos para la estadística y la ciencia de los
datos, siendo 
introducida en el año 2011. 
Es exclusivamente ejecutada en R y todas las librerías asociadas a R. 
Sin embargo, el desarrollo en Python es posible y R está estrechamente integrado en esta 
herramienta para proporcionar una experiencia de usuario óptima. 
RStudio unifica la programación, ejecución, depuración, acceso remoto a los datos, exploración
de datos y 
visualización en una sola herramienta. 
Spyder intenta imitar el comportamiento de RStudio para llevar su funcionalidad al mundo de
Python. 
Sin embargo, Spyder no tiene el mismo nivel de funcionalidad que RStudio, los científicos de
datos 
lo consideran como una alternativa. 
Pero en el mundo de Python, Jupyter es usado con más frecuencia. 
Este diagrama muestra cómo Spyder integra el código, la documentación, las visualizaciones y
otros componentes 
en un simple canvas. 
A veces tus datos no entran en la capacidad de almacenamiento o memoria principal de una sola
computadora. 
Es allí donde entran los entornos de ejecución de clúster. 
El bien conocido marco de trabajo de computación en clúster Apache Spark es uno de los
proyectos Apache 
más activos y es usado a lo largo de todas las industrias, incluyendo muchas compañías en la
lista de Fortune 500. 
La propiedad clave de Apache Spark es la escalabilidad lineal. 
Lo que quiere decir que, si duplicas el número de servidores en un clúster, también duplicarás 
su desempeño. 
Después de que Apache Spark comenzó a ganar cuota de mercado y Apache Flink fue creado. 
La diferencia clave entre Apache Spark y Apache Flink es que Apache Spark es un motor 
de procesamiento de datos por lotes, capaz de procesar grandes cantidades de archivos de datos
por archivo. 
Apache Flink, por otra parte, es una imagen de procesamiento de flujo de datos con su enfoque
principal en el procesamiento 
de flujos de datos en tiempo real. 
Aunque el motor soporta ambos paradigmas de procesamientos de datos, Apache Spark es
generalmente la opción 
en la mayoría de los casos de uso. 
Uno de los últimos desarrollado en los entornos de ejecución de la ciencia de los datos es
llamado “Ray”, 
el cual se enfoca claramente en la formación de modelos de aprendizaje profundo a gran escala. 
Echemos un vistazo a las herramientas de código abierto para los científicos de datos que están
completamente integradas y son visuales. 
Con estas herramientas, no necesitas conocimientos de programación. 
Las tareas más importantes son soportadas por estas herramientas, estas tareas incluyen la
integración de datos, 
la transformación, la visualización de datos y la construcción de modelos. 
KNIME desarrollado en la Universidad de Constanza en el año 2004. 
Como puedes ver KNIME tiene una interfaz de usuario visual con la habilidad de arrastrar y
soltar. 
También tiene capacidades de visualización ya incorporadas. 
Knime puede ser extendida para programar con R y Python y tiene conectores con Apache 
Spark. 
Otro ejemplo de este grupo de herramientas es Orange. 
Es menos flexible que KNIME pero mucho más fácil de usar. 
En esta sección, has aprendido acerca de las tareas más comunes en la ciencia de los datos y
cuales herramientas de código 
abierto son relevantes para estas tareas. 
En el próximo video, discutiremos algunas herramientas comerciales establecidas que
encontrarás en 
tu experiencia con la ciencia de datos. 
Vamos al siguiente video para obtener más detalles.

Herramientas Comerciales para la Ciencia


de los Datos
Previamente cubrimos las herramientas de código abierto para la ciencia de los datos. 
Ahora, veamos las opciones comerciales que encontrarás en muchos proyectos empresariales. 
Vamos a repasar nuestra visión general de las distintas categorías de herramientas. 
En la gestión de datos, la mayoría de los datos relevantes de una empresa se almacenan en una 
base de datos como lo son Oracle Database, Microsoft SQL Server, o IBM Db2. 
Aunque las bases de datos de código abierto están ganando popularidad, esos tres productos de
gestión de datos 
se siguen considerando como los estándares de la industria. 
Lo que quiere decir que no desaparecerán en un futuro cercano. 
No se trata solamente de funcionalidad. 
Los datos son el corazón de cualquier organización y la disponibilidad de soportes comerciales 
juegan un papel muy importante. 
El soporte comercial es ofrecido directamente por los proveedores de software, los socios
influyentes 
y las redes de soporte. 
Cuando nos enfocamos en las herramientas comerciales de integración de datos, hablamos de
herramientas de “extracción, transformación 
y carga” o “ETL”. 
De acuerdo a Gartner Magic Quadrant (Cuadrante Mágico de Gartner), Informatica Powercenter e
IBM InfoSphere DataStage son 
los líderes, seguidos por los productos de SAP, Oracle, SAS, Talend y Microsoft. 
Estas herramientas apoyan el diseño y despliegue de las tuberías de procesamiento de datos de
ETL a través de 
una interfaz gráfica. 
También proporcionan conectores a la mayoría de los sistemas de información de destino
comercial al igual que para los 
de código abierto. 
Finalmente, Watson Studio Desktop incluye un componente llamado Data Refinery, el cual
permite 
La definición y ejecución de procesos de integración de datos en un estilo de hoja de cálculo. 
En el ámbito comercial, las visualizaciones de datos utilizan herramientas de inteligencia 
empresarial o “BI”. 
Su enfoque principal es crear informes visualmente atractivos y fáciles de comprender y tableros
de control en vivo. 
Los ejemplos comerciales más importantes son: Tableau, Microsoft Power BI e IBM Cognos 
Analytics. 
Otro tipo de visualización se destina a los científicos de los datos en lugar de a los usuarios
habituales. 
Un problema de muestra podría ser “¿Cómo pueden relacionarse las distintas columnas de una
tabla?”. 
Este tipo de funcionalidad está incluida en Watson Studio Desktop. 
Si quieres construir un modelo de aprendizaje automático usando una herramienta comercial,
deberías considerar el 
uso de un producto de minería de datos. 
Los más importantes de estos tipos de productos son: SPSS Modeler y SAS Enterprise Miner. 
Además, una versión de SPSS Modeler está igualmente disponible en Watson Studio Desktop,
basada 
en la versión de la nube la de herramienta. 
Discutiremos más sobre las herramientas basadas en la nube en el próximo video. 
En el software comercial, el despliegue de modelos está estrechamente integrado en el proceso
de construcción de modelos. 
Este diagrama muestra un ejemplo de SPSS Collaboration and Deployment Services en el cual 
son usados para desplegar cualquier tipo de activo creado por la suite de herramientas de
Software SPSS. 
Otros proveedores usan el mismo tipo de proceso. 
Los software comerciales igualmente pueden exportar modelos en formato abierto. 
Ejemplo, SPSS Modeler permite la exportación de modelos como Predictive Model Markup
Language, 
o PMML, el cual puede ser leído por numerosos paquetes de software comerciales y abiertos. 
Model monitoring es una nueva disciplina y actualmente no existen herramientas comerciales
relevantes 
disponibles. 
Por lo tanto, el código abierto es la primera opción. 
Esto mismo pasa con la gestión de activos de código. 
El código abierto con Git y GitHub es el estándar efectivo. 
La gestión de activos de código, con frecuencia llamado gobernanza de datos o linaje de datos,
es una parte fundamental de la ciencia de 
datos a nivel empresarial. 
Los datos deben ser versionados y anotados utilizando metadatos. 
Los proveedores, incluyendo Informatica Enterprise Data Governance e IBM, proporcionan
herramientas para 
estas tareas específicas. 
IBM InfoSphere Information Governance Catalog cubre las funciones como el diccionario de
datos, 
lo cual facilita el descubrimiento de los activos de datos. 
Cada activo de datos se asigna a un administrador de datos - - el propietario de los datos. 
El propietario de los datos es responsable de ese activo de datos y puede ser contactado. 
El linaje de datos también es cubierto; esto permite al usuario hacer un seguimiento de los pasos
de transformación 
seguidos en la creación de los activos de datos. 
El linaje de datos también incluye una referencia a los daos de la fuente real. 
Se pueden agregar reglas y políticas para reflejar los complejos requisitos normativos y
comerciales 
de privacidad y retención de datos. 
Watson Studio es un entorno de desarrollo completamente integrado para los científicos de
datos. 
Es normalmente consumido a través de la nube, y cubriremos más sobre este en una siguiente 
lección. 
También hay una versión de escritorio disponible. 
Watson Studio Desktop combina Jupyter Notebooks con herramientas gráficas para maximizar
el rendimiento de los 
científicos de datos. 
Watson Studio, conjuntamente con Watson Open Scale, es una herramienta completamente
integrada que cubre el 
ciclo de vida completa de la ciencia de los datos y todas las tareas que hemos discutido
previamente. 
Hablaremos más de ambos en la siguiente lección. 
Tan solo ten en cuenta que pueden ser desplegados en un centro de datos local que pueden ser
Kubernetes 
o RedHat OpenShift. 
Otro ejemplo de una herramienta comercial totalmente integrada es H2O Driverless AI, la cual
cubre el 
ciclo de vida completo de la ciencia de los datos. 
En esta lección, has aprendido cómo las tareas más comunes de la ciencia de los datos son
soportadas por 
las herramientas comerciales. 
En el siguiente video, descubriremos herramientas de la ciencia de los datos que están
disponibles exclusivamente en la 
nube.

Herramientas basadas en la nube para la


ciencia de los datos
Notas
Discutir

Librerías de la Ciencia de los Datos


En este video, revisaremos diferentes librerías de la ciencia de los datos. 
Las librerías son una colección de funciones y métodos los cuales te permiten realizar una gran 
variedad de acciones sin tener que escribir el código tú mismo. 
Nos enfocaremos en la lengude Python: Librerías de Computación Científica en Python 
Librerías de Visualización en Python, Librerías de Aprendizaje Automático de Alto Nivel y
Librerías de Aprendizaje 
Profundo – “Alto Nivel” sencillamente quiere decir que no tienes que preocuparte por los
detalles, aunque 
esto dificulta el estudio o la mejora de las Librerías de Aprendizaje Profundo en Python 
Las librerías en otros lenguajes 
generalmente las librerías contienen módulos incorporados que proporcionan distintas
funcionalidades que puedes 
usar directamente; algunas veces son llamados “frameworks o marcos de trabajo”. 
También hay muchas librerías, que ofrecen una amplia variedad de posibilidades. 
Pandas ofrece estructuras de datos y herramientas para la depuración, manipulación y análisis
de 
datos efectivos. 
Esto proporciona herramientas para trabajar con los distintos tipos de datos. 
El instrumento principal de Pandas es una tabla de dos dimensiones que consiste en columnas y
filas. 
Esta tabla es llamada “DataFrame” y está diseñada para proporcionar una fácil indexación para
que 
puedas trabajar con tus datos. 
Las librerías NumPy están basadas en matrices, lo que te permite aplicar funciones matemáticas
a estas 
matrices. 
Pandas está realmente construido basado en NumPy 
Los métodos de Visualización de Datos son una grandiosa forma de comunicarse con los demás y
mostrar los resultados significativos 
del análisis. 
Estas librerías te permiten crear gráficos, tablas y mapas. 
El paquete Matplotlib es la librería más conocida para la visualización de datos y es 
excelente para hacer gráficos y diagramas. 
Igualmente, los gráficos son altamente personalizables. 
Otra librería de visualización de alto nivel, es Seaborn, el cual está basado en matplotlib. 
Seaborn hace fácil la generación de gráficos como mapas de calor, series temporales y gráficos
de violín. 
Para el aprendizaje automático, la librería Scikit-learn contiene herramientas para el modelado
estadístico, incluyendo 
regresión, clasificación, clustering o agrupación entre otros. 
Está construida basada en NumPy, SciPy y matplotlib y es prácticamente para comenzar. 
Para este enfoque de alto nivel, tu defines el modelo y especificas los tipos de parámetros que 
te gustaría usar. 
Para el aprendizaje profundo, Keras te permite construir el modelo estándar de aprendizaje
profundo. 
Así como Scikit-learn, la interfaz de alto nivel te permite construir modelos de forma rápida y
simple. 
Esto puede funcionar usando las unidades de procesamiento de gráficos (GPU), pero para
muchos casos de aprendizaje profundo 
un entorno de nivel menor. 
TensorFlow es un marco de nivel bajo usado en la producción a gran escala de modelos de
aprendizaje profundo. 
Está diseñado para la producción, pero puede ser difícil de manejar para la experimentación. 
Pytorch es usado para la experimentación, haciéndolo que sea simple para los investigadores
probar sus ideas. 
Apache Spark es un marco de computación de clúster de propósito general el cual permite el
procesamiento de datos 
usando clústeres de computación. 
Esto quiere decir que procesas los datos de forma paralela, utilizando múltiples computadoras
simultáneamente. 
La librería Spark una funcionalidad muy similar a la 
de Pandas Numpy 
Scikit-learn 
Apache Spark data processing jobs puede usar Python 
R Scala o SQL 
Hay muchas librerías para Scala, la cual se usa predominantemente en la ingeniería de datos 
pero de igual forma se usa a veces en la ciencia de los datos. 
Vamos a discutir algunas de las librerías que son complementarias de Spark 
Vegas es una librería Scala para la visualización de datos estadísticos. 
Con Vegas, puedes trabajar con los archivos de datos, así como Spark DataFrames. 
Para el aprendizaje profundo, puedes usar BigDL. 
R tiene una funcionalidad incorporada para el aprendizaje automático y la visualización de
datos, pero también 
existen diferentes librerías complementarias: ggplot2 es una librería popular para la
visualización de datos 
en R. Igualmente puedes utilizar librerías que te permiten 
hacer la interfaz con Keras y TensorFlow. 
R ha sido el estándar de-facto para la ciencia de datos de código abierto, pero ahora está siendo
sustituido 
por Python.

Interfaces de Programación de
Aplicaciones
En este vídeo discutiremos acerca de las Interfaces de Programación de Aplicaciones o también
conocidas como APIs. 
Específicamente, discutiremos: Qué es una API 
Librerías API – API REST, incluyendo: 
Solicitud y Respuesta 
Una API permite que dos elementos de un software se hablen entre sí. 
Por ejemplo, tienes tu programa, tienes tus datos, tienes otros componentes de software. 
Usas la API para comunicarte con otros componentes de software. Usas la API para comunicarte 
con la API usando las entradas y salidas. 
No tienes que saber cómo funciona la API, solamente necesitas saber sus entradas y salidas. 
Recuerda, que la API sólo se refiere a la interfaz, o a la parte de la librería que tú ves. 
La “Librería” se refiere a todo el tema. 
Considera la librería pandas. 
Pandas es en realidad un conjunto de componentes de software, muchos de los cuales ni
siquiera están escritos en Python. 
Tienes algunos datos. 
Tienes un conjunto de componentes de software. 
Nosotros usamos la Pandas API para procesar los datos comunicándonos con los otros
componentes del software. 
Puede haber tan solo un componente de software en el back end, pero puede estar separado 
La API para diferentes lenguajes. 
Considera TensorFlow, escrito en C++. 
Hay APIs separadas en Python 
JavaScript C++ 
Java Go. 
La API es sencillamente la interfaz. 
También hay múltiples APIs desarrolladas por voluntarios para TensorFlow; como por ejemplo 
Julia MATLAB 
R Scala 
y muchas más. 
Las APIs REST son otro tipo de API muy popular. 
Estas te permiten comunicarte usando la Internet, aprovechando el almacenamiento y mayor
acceso 
a los datos, algoritmos de inteligencia artificial y muchos otros recursos. 
RE significa “Representación” la S significa “Estado” y la T 
Significa “Transferencia”. 
En la API REST, tu programa es llamado el “cliente”. 
La API se comunica con un servicio web el cual llamas a través de Internet. 
Hay un conjunto de reglas que rigen (clic 4)Comunicación, (clic 5)Entrada o Solicitud, y (clic 6 )
Salida 
O Respuesta. 
Aquí hay algunos términos comunes relacionados con la API. 
Tú o tú código pueden ser vistos como un cliente. 
El servicio web se refiere a un recurso. 
El cliente encuentra el servicio a través de un punto final. 
El cliente envía la solicitud al recurso y la respuesta al cliente. 
Los métodos HTTP son una forma de transmitir datos a través de Internet 
le decimos a las APIs REST qué hacer enviando una solicitud. 
La solicitud es usualmente comunicada a través de un mensaje HTTP. 
Generalmente el mensaje HTTP contiene un archivo JSON, que contiene las instrucciones para la
operación 
que nos gustaría que el servicio realizara. 
Esta operación se transmite al servicio web a través de Internet. 
El servicio realiza la operación. 
Similarmente, el servicio web devuelve una respuesta a través de un mensaje HTTP, donde la
información 
se devuelve generalmente usando un archivo JSON. 
Esta información es transmitida de vuelta al cliente. 
La API Watson Text to Speech es un ejemplo de una API REST. 
Esta API convierte la voz a texto. 
En las API de llamadas, se envía una copia del archivo de audio a la API; este proceso es llamado 
solicitud de envío. 
La API envía la transcripción de texto de lo que el individuo está diciendo. 
La API está haciendo una solicitud de obtención. 
La API Watson Language-Translator provee otro ejemplo. 
Envías el texto que quieres traducir a la API, y ésta traduce el texto 
y te envía la traducción. 
En este caso traducimos de inglés a español. 
En este video, hemos discutido lo que es una API 
Librerías API – API REST, incluyendo 
Solicitud y Respuesta 
Gracias por ver este video.

Conjuntos de datos - Mejorando la ciencia


de los datos
En este video discutiremos los conjuntos de datos: qué son, por qué son tan importantes en la
ciencia de los datos, 
y donde encontrarlos. 
Primero definamos brevemente lo que es un conjunto de datos. 
Un conjunto de datos es una colección estructurada de datos. 
Los datos incluyen información que podría ser representada como texto, números o archivos
multimedia como imágenes, 
audio o video. 
Un conjunto de datos que es estructurado como datos tabulares comprende una colección de
filas, que a su vez 
Comprenden columnas que almacenan la información. 
Un formato popular de datos tabulados es el de “valores separados por comas” o CSV. 
Un archivo de tipo CSV es un archivo de texto delimitado en el que cada línea representa una fila
y los valores de los datos 
están separados por una coma. 
Por ejemplo, imagina un conjunto de datos de observaciones de una estación meteorológica. 
Cada fila representa una observación en un momento determinado, mientras que cada columna
contiene la información 
sobre esa observación en particular, como la temperatura, humedad y cualquier otra condición 
meteorológica. 
Las estructuras de datos jerárquicas o de red son normalmente usadas para representar las
relaciones 
entre los datos. 
Los datos jerárquicos son organizados en una estructura de árbol, mientras que los datos de red
pueden ser almacenados 
de forma gráfica. 
Por ejemplo, las conexiones entre personas en un sitio web de redes sociales normalmente son
representadas 
en forma de gráfico. 
Un conjunto de datos también puede incluir archivos de datos sin procesar, como lo son las
imágenes o audios. 
El conjunto de datos MNIST es muy popular para la ciencia de los datos. 
Contiene imagines de dígitos escritos a mano y es comúnmente usado para entrenar los sistemas
de procesamiento 
de imágenes. 
Tradicionalmente, la mayoría de los conjuntos de datos eran considerados privados porque
contenían información patentada 
o confidencial, como por ejemplo datos de clientes, datos de precios o cualquier otra
información 
comercialmente sensible. 
Estos conjuntos de datos no son normalmente compartidos públicamente. 
Con el tiempo, más y más entidades públicas y privadas como instituciones científicas, 
gobiernos, organizaciones e incluso empresas han comenzado a poner a disposición del 
público conjuntos de datos como “datos abiertos”, que permiten obtener una gran cantidad de
información de manera gratuita. 
Por ejemplo, las Naciones Unidas al igual que gobiernos federales y municipales alrededor del
mundo 
han publicado muchos conjuntos de datos en sus sitios web, que incluyen economía, sociedad,
asistencia media, 
transporte, medio ambiente y mucho más. 
El acceso a estos y otros conjuntos de datos abiertos permite a los científicos de datos,
investigadores, analistas y 
otras personas descubrir conocimientos anteriormente desconocidos, pero potencialmente
útiles. 
Ellos pueden crear nuevas aplicaciones bien sea para fines comerciales como para el bien
público. 
De igual forma pueden llevar a cabos nuevas investigaciones. 
Los datos abiertos han jugado un papel muy importante en el crecimiento de la ciencia de los
datos, el aprendizaje automático 
y la inteligencia artificial y han proporcionado a los profesionales una forma de perfeccionar sus
habilidades 
sobre una amplia variedad de conjuntos de datos. 
Existen muchas fuentes de datos abiertos en Internet. 
Puedes encontrar una lista extensa de portales de datos abiertos en todo el mundo en el sitio
web 
de la Fundación de Conocimiento Abierto (FCA) datacatalogs.org. 
Las Naciones Unidas, la Unión Europea y muchas otras organizaciones gubernamentales e
intergubernamentales 
mantienen repositorios de datos los cuales dan acceso a una amplia variedad de información. 
En Kaggle, la cual es una popular comunidad en línea de ciencia de los datos, podrás encontrar y
contribuir 
con conjuntos de datos que podrían ser de interés general. 
Por último, pero no menos importante, Google proporciona un motor de búsqueda de conjuntos
de datos que podrían ayudarte a encontrar 
los que tengan un valor particular para ti. 
Es importante reconocer que la distribución y el uso de datos abiertos podrían estar
restringidos, 
según lo definan las condiciones de su licencia. 
En caso de la falta de una licencia para la distribución de datos abiertos, muchos conjuntos de
datos eran compartidos en el pasado bajo 
licencias de software de código abierto. 
Estas licencias no fueron diseñadas para cubrir las consideraciones especificas relacionadas con
la 
distribución y uso de los conjuntos de datos. 
Para tratar el tema, Linux Foundation creó el Community Data License Agreement, 
o CDLA. 
Dos licencias fueron inicialmente creadas para compartir datos: CDLA-Sharing y CDLA-
Permissive. 
La licencia CDLA-Sharing te otorga permiso para utilizar y modificar los datos. 
La licencia estipula que si publicas tu versión modificada de los datos debes 
hacerlo bajo los mismos términos de la licencia de los datos originales. 
La licencia CDLA-Permissive igualmente te otorga permiso para utilizar y modificar los datos. 
Sin embargo, no estás obligado a compartir los cambios que le hagas a los datos. 
Debes tener en cuenta que ninguna de las dos licencias impone restricciones en los resultados
que podría conseguir al usar los datos, 
lo cual es importante en la ciencia de los datos. 
Digamos, por ejemplo, que estas construyendo un modelo el cual realiza una predicción. 
Si estás capacitando a el modelo usando conjuntos de datos bajo la licencia de CDLA, no estás
obligado a 
compartir el modelo, o a compartirlo bajo una licencia especifica si decides compartirlo. 
En este video has aprendido acerca de los conjuntos de datos abiertos, su rol en la ciencia de los
datos y 
donde puedes encontrarlos. 
También hemos visto algo de Community Data License Agreement, el cual facilita 
el intercambio y como compartir los datos abiertos. 
Un aspecto importante que no hemos cubierto en este video es la calidad y precisión de los
datos, 
los cuales podrían variar mucho dependiendo de quien haya recolectado y contribuido al
conjunto de datos. 
Mientras que algunos conjuntos de datos abiertos pueden ser lo suficientemente buenos para
uso personal, es posible que no cumplan los requisitos de la empresa 
debido al impacto que pueden tener en el negocio. 
En el próximo modulo, aprenderás acerca de Data Asset eXchange, el cual es un repositorio de
datos abierto y curado.
Data Asset eXchange
A pesar del crecimiento de los conjuntos de datos abiertos que están disponibles al público, aun
así 
puede ser difícil descubrir conjuntos de datos que sean a la vez de alta calidad y que tengan 
términos de licencia y uso claramente definidos. 
Para ayudar a resolver este reto, IBM creó Data Asset eXchange, o “DAX”, el cual 
que mostraremos en este vídeo. 
DAX proporciona una fuente de confianza para encontrar conjuntos de datos abiertos que están
listos para ser usados en 
aplicaciones empresariales. 
Estos conjuntos de datos los cuales cubren una amplia variedad de dominios, incluyendo
imagines, video, texto 
y audio. 
Debido a que DAX proporciona un alto nivel de conservación de la calidad de los conjuntos de
datos, así como las licencias 
y condiciones de uso, los conjuntos de datos DAX usualmente son fáciles de adoptar, bien sea en
proyectos de investigación 
o comerciales. 
Siempre que sea posible, DAX apunta a poner a disposición los conjuntos de datos en el ámbito
de una de las variantes 
de CDLA Community Data License Agreement, con el fin de fomentar el intercambio de datos y la
colaboración. 
DAX también provee un lugar único para acceder a los conjuntos de datos únicos, en particular
de los proyectos de 
IBM Research. 
Para facilitar a los desarrolladores el inicio en el uso de los conjuntos de datos, DAX también
provee 
tutoriales notebooks que explican los fundamentos de la limpieza de datos, pre-procesamiento 
y el análisis exploratorio. 
Para algunos conjuntos de datos, también hay notebooks que ilustran cómo realizar análisis más
complejos, 
como la creación de gráficos, análisis estadísticos, análisis de series cronológico, capacitación en
los modelos de aprendizaje automático 
y la integración de aprendizaje profundo a través del uso de Model Asset eXchange, (un proyecto 
muy relacionado con DAX y también está disponible en el sitio web de IBM Developer). 
De esta forma, DAX ayuda a los desarrolladores a crear flujos de trabajo analíticos y de
aprendizaje automático de principio a fin 
y a consumir datos y modelos abiertos con seguridad bajo los términos de licencia claramente
definidos. 
Digamos que has encontrado un conjunto de datos que podrían ser de tu interés. 
En la página de conjunto de datos podrás descargar el archivo comprimido de los conjuntos de
los datos de almacenamiento en la nube, 
explore el conjunto de los datos usando Jupyter Notebooks, revisar los metadatos del conjunto
de datos, así como el formato, 
términos de licencia y el tamaño y una vista previa de algunas partes de los conjuntos de datos. 
La mayoría de los conjuntos de datos en DAX son complementados con uno o más Jupyter
Notebooks que puedes 
usar para realizar la limpieza de datos, pre-procesamiento y el análisis exploratorio. 
Estos notebooks funcionan “tal cual” como en Watson Studio, la plataforma de ciencia Data
Sciencedata de IBM. 
Jupyter Notebooks y Watson Studio serán discutidos más adelante durante este curso. 
En este video, has aprendido sobre el repositorio de datos abiertos de IBM y acerca de Data Asset
eXchange. 
En el laboratorio practico tendrás la oportunidad de explorar el repositorio.

Modelos de Aprendizaje Automático


En este video, te presentaremos los modelos de aprendizaje automático al igual que aprendizaje
profundo. 
Los datos contienen una enorme cantidad de información que puede ser usada para resolver
ciertos tipos de problemas. 
El alcance tradicional del análisis de datos, como una persona que inspecciona manualmente los
datos o 
un programa computarizado especializado que automatice el análisis de los humanos, los cuales
llegan rápidamente a sus limites 
debido a la cantidad de datos para ser analizados o a la complejidad del problema. 
El aprendizaje automático usa algoritmos – también conocidos como “modelos” – para
identificar los patrones 
en los datos. 
El proceso por el cual el modelo aprende estos patrones a partir de los datos es llamado
“capacitación del modelo”. 
Una vez que un modelo es capacitado, entonces puede ser usado para hacer predicciones. 
Una vez que se le presentan los nuevos datos al modelo, intenta hacer predicciones o decisiones 
basadas en los patrones que ha aprendido de los datos anteriores. 
Los modelos de aprendizaje automático pueden ser divididos en tres clases básicas: aprendizaje
supervisado, 
aprendizaje no supervisado y aprendizaje reforzado. 
El aprendizaje supervisado es uno de los modelos de aprendizaje automático mas comúnmente
usados. 
En el aprendizaje supervisado, un humano provee los datos de entrada y las salidas correctas. 
El modelo intenta identificar las relaciones y dependencias entre los datos de entrada y 
la salida correcta. 
En términos generales, el aprendizaje supervisado es usado para resolver los problemas de
regresión 
y clasificación. 
Ahora vemos un ejemplo para cada tipo de problema: 
Los modelos de regresión son usados para predecir un valor numérico “real”. 
Por ejemplo, dada la información acerca de las ventas anteriores de casas, como lo son la
ubicación geográfica, tamaño, 
número de cuartos y precio de venta, puedes capacitar un modelo para predecir el precio de
venta 
estimado para otras casas con características muy similares. 
Los modelos de clasificación son usados para predecir si algo pertenece a una categoría o 
“clase” 
Por ejemplo, dado un conjunto de correos electrónicos con una designación de si son
considerados 
o no como spam, un algoritmo puede ser capacitado para identificar los correos electrónicos no
solicitados. 
En el aprendizaje no supervisado, los datos no son etiquetados por un humano. 
Los modelos deben analizar los datos e intentar identificar los patrones y la estructura dentro de
los 
datos basándose solamente en las características de los propios datos. 
La agrupación y detección de anomalías son dos ejemplos claros de este tipo de aprendizaje. 
Los modelos de agrupación son usados para dividir cada registro de un conjunto de datos en uno
de un pequeño numero 
de grupos similares. 
Un ejemplo de un modelo de agrupación podría ser proporcionar recomendaciones de compra
para una 
tienda e-commerce basada en el comportamiento de las compras anteriores y el contenido de la
cesta de compra. 
La detección de anomalías identifica los valores atípicos en un conjunto de datos, tales como,
transacciones fraudulentas con tarjetas de crédito 
o intentos sospechosos de inicios de sesión en línea. 
El tercer tipo de aprendizaje, el cual es aprendizaje reforzado, esta vagamente basado en la
forma en que los seres 
humanos y otros organismos aprenden. 
Piensa en un ratón en un laberinto. 
Si el ratón llega al final del laberinto, él obtiene un trozo de queso. 
Esta es la “recompensa” por haber terminado la tarea. 
El ratón aprende – por ensayo y error – cómo recorrer el laberinto para conseguir 
todo el queso que pueda. 
De forma similar, un modelo de aprendizaje reforzado aprende el mejor conjunto de acciones
que debe tomar, 
dado su entorno actual, para obtener la mayor recompensa a lo largo del tiempo. 
Este tipo de aprendizaje ha sido muy exitoso recientemente al vencer a los mejores jugadores
humanos 
en juegos como go, ajedrez y los videojuegos de estrategia más populares. 
El aprendizaje profundo es un tipo especializado de aprendizaje automático. 
Lo que se refiere a un conjunto general de modelos y técnicas que tratan vagamente de emular la
manera en que el 
cerebro humano resuelve una amplia variedad de problemas. 
Es comúnmente usado para analizar el lenguaje natural, bien sea hablado y texto, así como las
imágenes, audio 
y video para pronosticar los datos de series temporales y mucho más. 
El aprendizaje profundo ha tenido demasiado éxito recientemente en estas y otras áreas, por lo
tanto 
se está convirtiendo en una herramienta cada vez más popular e importante para la ciencia de
los datos. 
El aprendizaje profundo normalmente suele requerir conjuntos de datos muy grandes
etiquetados para capacitar a un modelo, 
es intensivo en computación y usualmente requiere un hardware de propósito especial para
lograr tiempos de 
capacitación aceptables. 
Puedes construir un modelo personalizado de aprendizaje profundo desde cero o también usar
modelos pre-capacitados 
de los repositorios de modelos públicos. 
Los modelos de aprendizaje profundo son implementados usando marcos de trabajos populares
como lo son TensorFlow, PyTorch, 
y Keras. 
Los marcos de trabajo de aprendizaje profundo generalmente proporcionan una API de Python
API y la mayoría son compatibles con otros lenguajes de 
programación como C++ y JavaScript. 
Puedes descargar modelos de última generación pre-capacitados de los repositorios que son
comúnmente 
referidos como modelos “zoos” 
Los modelos zoos más populares incluyen los proveídos por TensorFlow, PyTorch, Keras y
ONNX. 
Los modelos igualmente son publicados por grupos de investigación académica y comercial. 
Mientras está fuera del alcance de este video explicar en detalle cómo podrías 
construir un modelo, vamos a resumir brevemente las tareas de alto nivel usando un ejemplo. 
Vamos a suponer que quieres habilitar una aplicación para identificar objetos en imágenes
capacitando un 
modelo de aprendizaje profundo. 
Primero, recoges y preparas los datos que serán usados para capacitar el modelo. 
La preparación de los datos puede ser un proceso que consume mucho tiempo y trabajo. 
Para capacitar un modelo para detectar objetos en imágenes, necesitas etiquetar los datos
brutos de capacitación, 
ejemplo, dibujando cajas limitadoras alrededor de los objetos y etiquetándolos. 
Después, construirás un modelo desde cero o seleccionarás un modelo existente que podría ser
adecuado 
para la tarea bien sea desde un recurso público o privado. 
Entonces entrenas el modelo con los datos que has preparado. 
Durante la capacitación, tu modelo aprende a partir de los datos etiquetados, cómo identificar
los objetos que 
son representados en una imagen. 
Una vez que has comenzado la capacitación, analizas los resultados y repites el proceso hasta 
que el desempeño del modelo entrenado cumpla con tus requisitos. 
Cuando el modelo entrenado se comporta como se desea, lo despliegas para ponerlo a
disposición de tus 
aplicaciones. 
En este video, has aprendido acerca del aprendizaje automático al igual que el aprendizaje
profundo, para que son 
usados y dónde encontrar los modelos de código abierto. 
En el siguiente video, te presentaremos el Model Asset eXchange, una colección curada 
de modelos de aprendizaje profundo listos para ser usados, así como también personalizables.

El Model Asset Exchange


En este video, te presentaremos el Model Asset eXchange en IBM Developer, un recurso 
gratuito de código abierto para modelos de aprendizaje profundo. 
Durante este video nos referiremos a Model Asset eXchange como “MAX” 
En el video previo, describimos resumidamente las tareas de alto nivel que hay que completar 
para capacitar a un modelo desde cero. 
Debido al volumen de datos, trabajo, tiempo y recursos 
requeridos para completar las tareas, el tiempo de valoración puede ser bastante largo. 
Para reducir el tiempo de valoración, considera la posibilidad de tomar ventaja de los modelos
pre-capacitados para ciertos tipos de 
problemas. 
Estos modelos pre-capacitados pueden estar listos para ser utilizados inmediatamente o pueden
tomar menos tiempo para 
ser capacitados. 
El Model Asset eXchange es un repositorio gratuito de código abierto 
para microservicios de aprendizaje profundo listos para ser usados y personalizables. 
Estos microservicios están configurados para usar los 
modelos de aprendizaje profundo de última generación, pre-capacitados o personalizables, para
resolver los problemas empresariales más comunes. 
Estos modelos han sido revisados, probados y pueden ser rápidamente desplegados en entornos
locales y 
en la nube. 
Todos los modelos en MAX están disponibles bajo las licencias permisivas de código abierto,
haciendo más fácil 
el uso para propósito personales, empresariales y reduce el riesgo de responsabilidades legales. 
En MAX, puedes encontrar los modelos para una variedad de dominios, incluyendo imagen,
audio, video 
y análisis del lenguaje natural. 
Esta lista incluye una pequeña selección. 
En el laboratorio para este módulo, tendrás la oportunidad de explorar esos modelos. 
Echemos un vistazo a los componentes de un típico microservicio de modelos. 
Cada microservicio incluye los siguientes componentes: 
Un modelo de aprendizaje profundo pre-capacitado. 
Código que pre-procesa las entradas antes de ser analizada por el modelo y código que post-
procesa 
la salida del modelo. 
Una API publica estandarizada que permite a las aplicaciones acceder a la funcionalidad de los
servicios. 
Los microservicios de modelos de MAX son construidos y distribuidos como imágenes de Docker
de código abierto. 
Docker es una plataforma de contenedores que hace mas fácil la construcción de aplicaciones y
su despliegue 
en un entorno de desarrollo, prueba o producción. 
La fuente de imágenes Docker es publicada en GitHub y puede ser descargada, personalizada
según sea necesario 
y utilizada en entornos personales o comerciales. 
Puedes desplegar y ejecutar estas imágenes en un entorno de prueba o producción usando
Kubernetes, 
un sistema de código abierto para automatizar el despliegue, escalado y la gestión de
aplicaciones en contenedores en 
nubes privadas, hibridas o públicas. 
Una plataforma popular Kubernetes a nivel empresarial es Red Hat OpenShift la cual está
disponible 
en IBM Cloud, Google Cloud Platform, Amazon Web Services y Microsoft Azure. 
Los microservicios de modelos exponen una API REST que los desarrolladores pueden usar para
incorporar 
el aprendizaje profundo en sus aplicaciones y servicios. 
Debido a que los API REST pueden ser consumidos usando cualquier lenguaje de programación,
fácilmente puedes integrar 
estos servicios en un ecosistema existente. 
La API expone un punto final o “endpoint” de predicción y unos o más puntos finales de
metadatos. 
Este ejemplo muestra los puntos finales del Microservicio de Detección de Objetos. 
El punto final del modelo/predicción tiene una imagen como entrada y regresa como respuesta
una lista 
de objetos que fueron detectados en la imagen, junto con las coordenadas del cuadro
delimitador que identifica 
donde el objeto detectado está ubicado. 
Algunos puntos finales de predicción igualmente pueden aceptar los parámetros de entrada
adicionales que impactan en los 
resultados producidos, tales como los filtros. 
Este microservicio expone dos puntos finales de metadatos, /modelo/etiquetas y
/modelo/metadatos. 
Estos puntos finales proporcionan información como los objetos que pueden ser detectados y el
modelo de aprendizaje 
profundo usado para derivar las respuestas dada la entrada. 
En la parte del laboratorio para este módulo, tendrás la oportunidad de explorar y probar estos
puntos finales 
utilizando un navegador web. 
Cada punto final acepta entradas de amigable aplicación, como una imagen en formato JPG,
PNG o GIF 
en vez de una estructura de datos especifica del modelo. 
Cada punto final también genera salidas de amigable aplicación, como el JSON estandarizado, el
cual 
es un formato poco pesado de intercambio de datos. 
Vamos a echar un vistazo más de cerca a lo que pasa cuando una aplicación invoca el punto final 
de la predicción. 
En este ejemplo, un usuario ha seleccionado una imagen en una aplicación web, el punto final de
la predicción 
es invocado y la imagen es cargada. 
El microservicio prepara la imagen de entrada para el procesamiento, ejecuta el modelo de
aprendizaje profundo 
que identifica los objetos de la imagen, genera una respuesta usando los resultados de
predicción y 
regresa el resultado a la aplicación. 
La aplicación muestra los resultados dibujando cajas y etiquetas delimitadoras. 
En este video, hemos presentado el Model Asset eXchange, que es un repositorio 
gratuito y de código abierto para microservicios que pone a disposición de las aplicaciones y 
servicios en entornos locales, la nube y la funcionalidad de aprendizaje profundo. 
En el laboratorio, tendrás la oportunidad de probar un modelo de microservicio, explorar su 
API y aprender más acerca de cómo puedes aprovecharlo desde una aplicación web y una
aplicación de Internet 
de las Cosas (IoT).

Laboratorio: Explorar los Conjuntos de


Datos y Modelos (1 hora)
LAB: Empezando con el Model Asset Exchange y el Data Asset Exchange

En este laboratorio explorarás el Model Asset Exchange (MAX) y el Data Asset


Exchange (DAX), que son dos recursos de código abierto de Data Science resources
en IBM Developer.

Al completar la parte 1 de este laboratorio (“Explorar los modelos de aprendizaje


profundo”) podrás:

●      Encontrar modelos de aprendizaje profundo listos para usar en el Model Asset


Exchange
●      Localizar recursos que te guíen en el despliegue en un entorno local o de nube

●      Explorar la API de microservicio de modelo de aprendizaje profundo usando tu


navegador web

●      Articular cómo los desarrolladores pueden consumir esos microservicios.

Al completar la parte 2 (“Explorar los conjuntos de datos de aprendizaje profundo”)


conocerás:

●      Dónde encontrar los conjuntos de datos abiertos en IBM Developer

●      Cómo explorar esos conjuntos de datos

Te tomará aproximadamente 30 minutos completar el laboratorio. Sólo se requiere


un navegador web para completar las tareas.

Parte 1: Explorar los modelos de aprendizaje profundo

El Model Asset Exchange es un repositorio curado de los modelos de aprendizaje


profundo de código abierto para una variedad de dominios, como el procesamiento
de texto, imagen, audio y vídeo.

1. Abre https://developer.ibm.com/ en tu navegador web.

2. En el menú principal selecciona “Open Source at IBM” > “Model Asset


eXchange”. Se muestra la página principal de MAX.

En este ejercicio de laboratorio introductorio, nos vamos a centrar en algunas


características clave de MAX. Se puede obtener información más detallada en la
Learning Path o Ruta de Aprendizaje, que abarca los escenarios comunes de
despliegue y consumo.

3. Abre la Learning Path o Ruta de Aprendizaje (“Try the tutorial”) en una nueva
ventana (o pestaña) del navegador y revisa brevemente los objetivos y módulos

4. Cierra la ventana (o la pestaña) del explorador de la Learning Path o Ruta de


Aprendizaje.

5. La página principal muestra una pequeña selección de modelos. Desplázate hacia


abajo y haz clic en “View all models” para revisar la lista completa.
Puedes filtrar los modelos por tipo y dominio usando el filtro de la izquierda. 

6. Selecciona “Object Detection in Images” de la lista de Model Asset Technologies en


el lado izquierdo.

Se deben mostrar cuatro modelos: Nucleus Segmenter, Human Pose Estimator,


Image Segmenter y Object Detector. 

7. Selecciona el modelo Object Detector.


En la página del modelo puedes aprender sobre la tecnología subyacente, leer sobre
la investigación relacionada y explorar las opciones de despliegue y consumo.

8. La fuente del modelo está publicada en GitHub y puede ser descargada y


modificada si se desea. Haz clic en “Get this model” para abrir el repositorio en un
nueva pestaña (o ventana) del navegador.

El repositorio contiene todo lo que un desarrollador necesita para construir


manualmente una versión personalizada del modelo de microservicio.
9. Cierra la pestaña (o ventana) del navegador GitHub

10. En la página Object Detector


(https://developer.ibm.com/exchanges/models/all/max-object-detector/) navega a
la sección “Deployment”. Todos los modelos MAX se distribuyen como aplicaciones
en contenedores, que pueden desplegarse como un microservicio en un entorno
local, en un entorno de nube híbrido o en un entorno de nube utilizando Docker o
Kubernetes.
Está fuera del alcance de este laboratorio discutir los pasos del despliegue. Sin
embargo, puedes explorar el modelo de microservicio sin tener que desplegar nada,
lo cual discutiremos en la siguiente sección.

Explora un microservicio de modelos MAX

Para explorar un microservicio se puede acceder a una instancia de microservicio de


evaluación que está alojada en IBM Cloud.

11. Desplázate a la parte superior de la página y haz clic en “Try the API”

12. La página de especificación de la API del microservicio se abre en una nueva


pestaña (o ventana) del navegador.

13. Amplía la sección “model”. Se muestran los puntos finales del microservicio
REST.
El microservicio de Object Detector expone tres puntos finales a los que las
aplicaciones pueden acceder: un punto final de labels, un punto final de metadata, y
un punto final de predict. Exploremos el punto final de labels.

14. Haz clic en “GET /model/labels”. Este punto final devuelve una lista de objetos
que este modelo puede detectar.

15. Haz clic en “Try it out” y “Execute”.

La respuesta indica que este modelo fue entrenado para identificar 80 tipos
diferentes de objetos, como personas (person), bicicletas (bicycles), y autos (cars).
Puedes capacitar algunos modelos, como el Object Detector, usando tus propios
datos con la ayuda del servicio Watson Machine Learning en IBM Cloud. (Aunque no
lo harás en este laboratorio.) 

16. Haz clic en “POST /models/predict” y “Try it out” para probar el punto final del
servicio de modelos. Este punto final es lo que tus aplicaciones usarían para analizar
el contenido de una imagen.

17. Busca un archivo JPG o PNG en tu máquina local, acepta el


parámetro threshold por defecto y haz clic en “Execute” para invocar el punto final.
El microservicio analiza la imagen y devuelve una lista de objetos identificados.

18. Revisa la respuesta. Para cada objeto detectado se devuelve una entrada en la
lista de predictions,identificando la clase de objeto (por ejemplo, person), la
probabilidad de que la clase de objeto identificada sea correcta (por
ejemplo. 0.9879012107849121) y las coordenadas normalizadas en las que en la
imagen se detectó el objeto. La probabilidad es un valor numérico entre 0 y 1.
Cuanto más alto es el valor, más confianza tiene el modelo en la exactitud de su
predicción. 

El valor de entrada del threshold se utilizó como filtro, eliminando los objetos del
resultado en los que el modelo no tiene suficiente confianza.

19. Reduzca (o incremente) el valor del threshold a partir de su valor predeterminado


de 0,7 e invoca nuevamente el punto final. Los resultados devueltos pueden cambiar
dependiendo del valor que hayas seleccionado.

20. Cierra la pestaña (o ventana) del navegador.

En la siguiente sección revisaremos brevemente cómo las aplicaciones pueden


consumir el punto final de la predicción para analizar la entrada.

Consumir un microservicio de modelos MAX 

Dado que el microservicio expone una API REST, los desarrolladores pueden
implementar aplicaciones y servicios que consumen el punto final de la predicción
en cualquier lenguaje de programación.

1. En la página del Object Detector


(https://developer.ibm.com/exchanges/models/all/max-object-detector/) navega a
la sección “Example Usage”.
2. Para facilitar a los desarrolladores el comienzo, cada modelo viene con un
conjunto de ejemplos. Para el modelo del Object Detector estas muestras incluyen:

●      Un ejemplo de línea de comando que utiliza curl (https://curl.haxx.se/), una


popular herramienta de código abierto para descargar y subir archivos de la web.


Algunos modelos, como el Object Detector, también vienen con una aplicación de
muestra que puedes probar sin tener que instalar nada.
3. En la página del Object Detector
(https://developer.ibm.com/exchanges/models/all/max-object-detector/)
desplázate hasta la parte superior. 

4. Haz clic en “Try the web app” para ejecutar la aplicación de demostración en tu
navegador web.

La aplicación web de demostración sube una imagen (o toma una foto usando la
cámara web), envía una solicitud a un microservicio del Object Detector y visualiza la
respuesta dibujando cajas delimitadoras alrededor de los objetos detectados y
pegando una etiqueta.
Part 2: Explore deep learning data sets

The Data Asset Exchange is a curated collection of open data sets from IBM Research
and 3rd parties that you can use to train models.

1. Open https://developer.ibm.com/ in your web browser.

5. Sube una imagen (o toma una foto con la cámara web) e inspecciona los
resultados visualizados.

6. Cambia las condiciones del filtro (por ejemplo, disminuye el threshold de


probabilidad) y observa cómo afectan a los resultados visualizados. Observa que la
aplicación web almacena en el caché la respuesta y aplica el filtro sobre los datos
almacenados en el caché. Esto se hizo por dos razones:

●      Elimina la necesidad de reprocesar la imagen usando el microservicio de


aprendizaje profundo (lo que reduce significativamente el tiempo de respuesta de la
aplicación)

●      Ilustra cómo se puede aplicar el filtrado del lado del cliente a los resultados si el
punto final de la predicción no admite el filtrado según los criterios deseados.

Si estás interesado en saber más sobre cómo se implementó la aplicación, echa un


vistazo el patrón de código: https://developer.ibm.com/patterns/create-a-web-app-
to-interact-with-objects-detected-using-machine-learning/

Esto concluye la parte 1 de este laboratorio, donde discutimos el Model Asset


Exchange.

 Parte 2: Explorar los conjuntos de Aprendizaje Profundo

El Data Asset Exchange es una colección curada de conjuntos de datos abiertos de


IBM Research y terceros que se puede utilizar para capacitar a los modelos.

1. Abre https://developer.ibm.com/ en tu navegador.

2. En el menú principal selecciona “Open Source at IBM” > “Data Asset eXchange”.
Se muestra la página de inicio del DAX.

. From the main menu select Open Source at IBM > Data Asset eXchange. The DAX
homepage is displayed.
La colección incluye los conjuntos de datos del Debater project
(https://www.research.ibm.com/artificial-intelligence/project-debater/), conjuntos
de datos que pueden utilizarse para capacitar a los modelos en el análisis de la
disposición de los documentos, el procesamiento del lenguaje natural, el análisis de
serie temporales y más.

3. Abre el conjunto de datos NOAA Weather Data


(https://developer.ibm.com/exchanges/data/all/jfk-weather-data/), que contiene los
datos de una estación meteorológica en el Aeropuerto John F. Kennedy en New York
durante 8 años. Este conjunto de datos se utilizó para entrenar el modelo de
predicción meteorológica en MAX
(https://developer.ibm.com/exchanges/models/all/max-weather-forecaster/).
Puedes descargar el conjunto de datos usando el enlace “Get this dataset”. Los
conjuntos de datos se almacenan en forma de archivos comprimidos, que pueden
extraerse utilizando cualquier utilidad que soporte el formato tar.gz. Si no estás
familiarizado con este formato de archivo, echa un vistazo a este breve tutorial de
código abierto https://opensource.com/article/17/7/how-unzip-targz-file.

4. Inspecciona los metadatos del conjunto de datos. 

●      Este conjunto de datos se almacena como datos tabulares y formateado como


un archivo de valores separados por comas (CSV), que es un formato básico de
intercambio de datos muy popular.

●      El conjunto de datos se publicó bajo la amigable ciencia de los datos de acuerdo
a la licencia CDLA-Sharing (https://cdla.io/).

●      El conjunto de datos contiene series temporales y puede utilizarse para predecir
las tendencias meteorológicas.

5. La mayoría de los conjuntos de datos se complementan con Python notebooks


que se pueden utilizar para explorar, pre-procesar y analizar los datos. Puedes
acceder al notebook (o a los notebooks) haciendo clic en el enlace “Explore in
Watson Studio” o “Try the notebook”:
Los notebooks están alojados en Watson Studio, la plataforma de la ciencia de los
datos de IBM. Más adelante en este curso aprenderás más sobre Watson Studio, los
notebooks y cómo manejarlos.

6. [Opcional] Si ya estás familiarizado con los notebooks y Watson Studio siéntete


libre de abrir el enlace e importar el proyecto o el notebook. En el ejemplo que figura
a continuación se muestran los activos del proyecto de conjuntos de datos
meteorológicos, que incluyen el archivo de datos en bruto y dos notebooks.

Esto incluye la parte 2 de este laboratorio, que introduce a Data Asset Exchange.

Visión General de Git/GitHub


En este video, tendrás una visión general de Git y GitHub, cuales son los entornos populares 
entre los desarrolladores y los científicos de datos para realizar el control de versiones de los
archivos de código fuente y proyectos 
y la colaboración con otros. 
No puedes hablar de Git y GitHub sin el entendimiento básico de lo que es el control de
versiones.
Reproduce el video desde ::30 y sigue la transcripción0:30
Un sistema de control de versiones te permite hacer un seguimiento de los cambios a tus
documentos. 
Esto hace mucho mas fácil la recuperación de versiones antiguas de tu documento en caso de
cometer un error 
y hace que la colaboración con otros sea mucho más fácil. 
Aquí tenemos un ejemplo para ilustrar cómo funciona el control de versiones. 
Vamos a decir que tienes una lista de compras y quieres que tus compañeros de habitación
confirmen las cosas 
que necesitas y agregar otros artículos adicionales. 
Sin el control de versiones, tienes un gran desastre que limpiar antes de ir a realizar las compras. 
Con el control de versiones, tu sabes EXACTAMENTE lo que necesitas después de que cada uno
haya contribuido con sus ideas.
Reproduce el video desde :1:9 y sigue la transcripción1:09
Git es un software libre y de código abierto distribuido bajo la GNU General Public License. 
Git es un sistema de control de versiones distribuido, lo que quiere decir que los usuarios de
cualquier parte del mundo 
pueden tener una copia de tu proyecto en su propia computadora, cuando ellos hayan hecho
cambios, 
pueden sincronizar su versión con un servidor remoto para compartirlo contigo. 
Git no es el único sistema de control de versiones que existe allá fuera, pero el aspecto
distribuido es una 
de las principales razones por las que se ha convertido en uno de los sistemas de control de
versiones más común disponible. 
Los sistemas de control de versiones son ampliamente utilizados para cosas que implican
código, pero igualmente puedes 
controlar imágenes, documentos y cualquier tipo de archivo. 
Puedes utilizar Git sin ninguna interfaz web usando tu interfaz de línea de comandos, pero 
GitHub es uno de los servicios de alojamiento web más populares para los repositorios de Git. 
Otros incluyen GitLab, BitBucket y Beanstalk. 
Existen algunos términos que necesitarás conocer antes de poder comenzar. 
El protocolo SSH es un método para acceso remoto seguro de una computadora a otra. 
Un repositorio contiene las carpetas de tu proyecto que están configuradas para el control de
versiones. 
Una bifurcación es una copia de un repositorio. 
Una pull request es la manera en que solicitas que alguien revise y apruebe tus cambios 
antes de que se conviertan en la versión final. 
Un directorio de trabajo contiene los archivos y subdirectorios de tu computadora los cuales
están asociados 
con un repositorio Git. 
Hay algunos comandos básicos de Git los cuales siempre usarás. 
Cuando comiences con un nuevo repositorio, solamente necesitarás crearlo una vez: bien sea
localmente 
y luego hacer push a GitHub o clonando un repositorio ya existente utilizando el comando “git
init”.
Reproduce el video desde :3:3 y sigue la transcripción3:03
“git add” mueve los cambios desde el directorio de trabajo a la staging area. 
“git status”, permite ver el estado de tu directorio de trabajo y la snapshot del stage 
de tus cambios. 
“git commit”, toma una captura instantánea del stage de los cambios y los confirma en el
proyecto. 
“git reset”, deshace los cambios que hayas hecho en los archivos de tu directorio de trabajo. 
“git log”, permite navegar por los cambios previos de un proyecto. 
“git branch”, permite crear un entorno aislado dentro de tu repositorio para hacer los cambios. 
“git checkout”, permite ver y cambiar las branches existentes. 
“git merge” permite volver a unir todo nuevamente. 
Para aprender a usar Git efectivamente y comenzar a colaborar con los científicos de datos
alrededor 
del mundo, necesitarás aprender los comandos esenciales. 
Por suerte para nosotros, GitHub tiene increíbles recursos disponibles para ayudarte a
comenzar. 
Visita try.github.io para descargar las hojas con los distintos trucos y repasar los tutoriales. 
En los siguientes módulos, te daremos un curso intensivo acerca de cómo configurar tu entorno
local 
y como comenzar un proyecto.

Taller de GitHub Parte - 1


Taller práctico: Empezando en GitHub

Esfuerzo: 20 min

En este taller, comenzará con GitHub, creando una cuenta y un proyecto GitHub y
agregándole un archivo a través de su interfaz Web.

Objetivos 

Después de completar este taller, podrá:

1. Describir GitHub
2. Crear una cuenta GitHub
3. Agregar un Proyecto / Repo
4. Editar / Crear un archivo
5. Subir un archivo y presentar

Visión general de GitHub

Primero, presentemos a GitHub. GitHub en palabras simples es una colección de


carpetas y archivos. Es un servicio de alojamiento de repositorios Git, pero añade
muchas de sus propias características. Mientras que Git es una herramienta de línea
de comandos,  un servidor necesita ser alojado y mantenido también a través de la
línea de comandos, GitHub proporciona este servidor Git para ti y una interfaz
gráfica basada en la web. También proporciona control de acceso y varias
características de colaboración, como wikis y herramientas básicas de gestión de
tareas para cada proyecto. GitHub proporciona almacenamiento en la nube para el
código fuente, soporta todos los lenguajes de programación populares y agiliza el
proceso de iteración. GitHub incluye un plan gratuito para desarrolladores
individuales y para alojar proyectos de código abierto.

Ejercicio 1: Crear una cuenta GitHub

Por favor, siga los pasos que se indican a continuación para crear una cuenta GitHub:

Paso 1: Crear una cuenta: https://github.com/join


NOTA: Si ya tienes una cuenta en GitHub, puedes saltarte este paso y simplemente
entrar en tu cuenta.

Paso 2: Indicar los detalles necesarios para crear una cuenta, como se muestra a
continuación:

Y haga clic en “Create account”.

Paso 3: Hacer clic en “Verify” para verificar la cuenta y haga clic en “Done”
Paso 4: Después de la verificación, haga clic en “Join a Free Plan”

Paso 5: Seleccionar los detalles, como se muestra a continuación y haga clic en


“Complete Setup”
Paso 6: Vaya a su correo electrónico, busque el correo de verificación de GitHub, y
haga clic en el enlace o botón de ese correo electrónico para proceder con la
verificación.

NOTA: Si no recibe el correo electrónico de verificación, haga clic en “Resend


verification email.”

El correo electrónico ha sido verificado

Ejercicio 2: Añadir un Proyecto / Repo

Paso 1: Haga clic en el símbolo +, y luego clic en “New repository”.


Paso 2: Indique un nombre para el repositorio e inícielo con el archivo README.md
vacío.
Y haga clic en “Create repository”.

Ahora, será redirigido al repositorio que ha creado.

Empecemos a editar el repositorio.

Ejercicio 3: Crear / Editar un archivo

Ejercicio 3a: Editar un archivo

Paso 1: Una vez creado el repositorio, la carpeta raíz aparece listada por defecto y
tiene un solo archivo ReadMe.md. Haga clic en el icono del lápiz para editar el
archivo.
Paso 2: Agregue texto al archivo.

Paso 3: Desplácese hacia abajo de la página después de agregar el texto y haga clic
en “Commit Changes”.
Ahora, compruebe que su archivo ha sido editado con el nuevo texto.

Ejercicio 3b: Crear un nuevo archivo

Paso 1: Haga clic en el nombre del repositorio para volver a la rama master como en
este testrepo.

Paso 2: Haga clic en “Add file” y seleccione “Create New file” para crear un archivo en
el repositorio.
Paso 3: Proporcione el nombre del archivo y la extensión del mismo. Por ejemplo,
firstpython.py y añadir las líneas.

Paso 4: Desplácese hacia abajo de la página después de agregar el texto. Agregue la


descripción del archivo (opcional) y haga clic en “Commit new file”.
Paso 5: Su archivo ahora fue añadido a su repositorio y en el listado del repositorio
muestra cuando fue añadido/cambiado.

Ejercicio 4: Subir un archivo y Comprometerse

Paso 1: Haga clic en “Add file” y seleccione “Upload files” para subir un archivo (Subir
cualquier archivo .txt, .ipynb, .png) en el repositorio de su computadora local.

Paso 2: Haga clic en “choose your files” y elija cualquier archivo de su ordenador.

Paso 3: Una vez que el archivo termine de ser subido, haga clic en “Commit Changes”
Paso 4: Ahora, su archivo se agregó al repositorio.

Resumen

En este documento, ha aprendido a crear un nuevo repositorio, añadir un nuevo


archivo, editar y subirlos a un repositorio, así como confirmar los cambios.

Autor(es)

Romeo KienzlerMalika Singla

Otro(s) Colaborador(es)
Rav Ahuja

Registro de modificación

Modificado
Fecha Versión Descripción de Modificación
por
2020-16-
0.5 Malika Singla Comprobación de ortografía, número de paso añadido
07
2020-14- Cambio de logo, se actualizó el esfuerzo, el título, la introducció
0.4 Rav Ahuja
07 objetivos, añadió los autores y el registro de modificación
2020-13- Se añadió a GitLab y se hicieron algunos cambios de formato, s
0.3 Malika Singla
07 objetivos, etc.
2020-03- 0.2 Malika Singla Reducido y añadido el registro de la cuenta GitHub, nuevas cap
Modificado
Fecha Versión Descripción de Modificación
por
07 pantalla, etc.
2020-30- Romeo
0.1 Versión inicial redactada
06 Kienzler

© IBM Corporation 2020. Todos los derechos reservados.

GitHub en Mac/Linux - Parte 1


¡Bienvenido a una pequeña introducción a Git y Github! Es muy sencilla por lo que si no tienes
absolutamente 
ni idea de lo que es esto, de lo contrario, podría ser aburrido. Sólo te digo como lo estoy 
utilizando y soy capaz de sobrevivir en la mayorías de los casos con ese conocimiento. Algunas
veces 
tengo que leer la documentación para cosas más avanzadas, pero en el ochenta por ciento de
los 
casos lo que te diré ahora es suficiente. Así que comencemos a usar Github el cual 
hace las cosas un poco más fáciles, también hay competencia con Github. Esto es GitLab, GitLab 
es particularmente interesante porque todo el sistema detrás de GitLab es de código abierto, por
lo que 
es la versión hosted, pero se puede tener todo el sistema en prem al igual que pagar por el
soporte 
de GitLab. Estas personas están particularmente en Berlín, por lo que son muy agradables. En fin,
comencemos 
con Github, así que lo que haré ahora es crear un repositorio. Lo cual es algo como, 
la ubicación donde van tus cosas. Vamos a llamar un demo, y podemos seleccionar en caso de 
querer crear un repositorio público o privado. Así que ese repositorio es remoto. Está alojado 
en Github, y está inicializado con un README y por ahora vamos a saltar .gitignore, el cual te
mostraré 
más tarde. Así que ahora vamos a crear un repositorio y una vez que este creado es muy fácil 
tener una copia de este repositorio localmente. Existen dos opciones, una es clonándolo a través
de HTTPS, 
o mediante SSH. Yo siempre uso SSH, SSH hace las cosas un poco más fáciles 
y lo único que necesitas hacer, es agregar tu identidad publica a Github. Puedo mostrarte 
eso más tarde. Ahora lo único que tenemos que hacer es ir a una carpeta vacía y luego 
digamos que git clone este enlace así que git lo hace. Lo que pasa ahora es que el contenido 
de esto es copiado a mi máquina. Aquí debo especificar mi contraseña para mi SSH identity, 
así que esto es algo que necesito explicarte más tarde. Así que ahora ve al demo, aquí verás 
el archivo README y verás que el contenido del archivo README. Bien ahora 
vamos a agregar el archivo, así que versa que solamente está el README y la carpeta .git. Por
favor 
nunca jamás lo toques. Vamos a crear otro archivo vi test.txt. Y hola, esto 
es un test y ahora le vamos a agregar el reop. Así que primero todos nosotros, digamos git agrega
test.txt, 
y ahora le dices git status. Entonces, podemos observar que este archivo es ahora llamado 
área de pruebas lo que es algo entre tu carpeta loca y tu repositorio. 
Aquí tienes una carpeta local con los contenidos, tienes un repositorio local y también tienes 
un repositorio remoto. Y personalmente trabajas con tu repositorio local. Y todas las 
demás personas, que trabajan contigo, lo hacen con sus repositorios locales 
y puedes sincronizar todos tus contenidos con el repositorio remoto. Ahora queremos ir a
commit, entonces 
digamos, o hagamos algo más. Digamos que creamos un archivo test2 y decimos git agrega 
test2.txt. Ahora interesantemente, si decimos git status ambos estarán en el área de prueba. 
Y ahora si decimos git commit y decimos message initial commit, eso es ahora nuestro
repositorio local 
en esta máquina. Y la idea es que mientras tengas el área de prueba, tú puedas controlar cuales 
archivos van a commit porque es una entidad atómica en git y es commit por lo que todo 
esta alrededor de commit. Por lo que técnicamente puedes controlar cuales archivos 
van a single commit y ahora lo que quieres hacer es push el contenido 
de tu repositorio local a un repositorio remoto. Porque si ahora vas a esto aquí a el proyecto 
git hub, entonces verás que no hay ningún archivo adicional. Así que digamos ahora git push y 
lo que pasa ahora es que tengo que proporcionar nuevamente una contraseña. Y no tengo el
gesto de contraseñas 
o el agente de contraseñas funcionando, por lo que ahora ves aquí que hemos confirmado este
cambio local desde el 
repositorio local al repositorio remoto. Ahora puedes ver que tienes estos dos 
archivos aquí y si haces clic en ese archivo primeramente verás el contenido y también puedes 
ver cuales tienes en commit el cual fue el responsable de agregar este archivo. Otra cosa
interesante es, 
si estas comenzados desde cero también puedes hacer lo siguiente. Vamos a borrar este 
proyecto lo que es un poco difícil solamente para asegurarnos de que no lo haces
accidentalmente, así 
que borra este repositorio y digamos que vamos a demo. Oh no, creo que tienes que escribir 
todo completamente, sí, así que este proyecto ha sido borrado. Bueno, vamos a hacer algo más. 
Vamos a crear un nuevo repositorio, pero vamos a iniciar el repositorio desde mi máquina.
Vamos a llamarlo 
nuevamente demo, no lo iniciamos con un archivo README. Decimos crear un repositorio y si
tenemos 
suerte github nos mostrará cómo hacerlo. Bien, vamos a deshacernos 
de la carpeta demo y creémosla nuevamente. Ahora vamos a hacer lo que nos dicen, entonces 
creamos el archivo README y decimos git init. Ahora que lo hemos iniciado tenemos 
la carpeta dot git la cual no deberías tocar nunca más. Ahora le decimos a git que agregue el
archivo README, 
pero también le podemos decir a git que agregue dot. Así que se agrega todo lo que estaba en
nuestra carpeta, que es 
solamente el archivo README.md y luego decimos git commit como prueba habitual o lo que
sea. Ahora no podemos 
decir git push, si decimos git push no sabrá donde hacerlo porque en realidad no le 
hemos dicho a esta carpeta local que debería conectarse al repositorio remoto. Eso lo hacemos
con 
el comando git add remote add origin y esa es la URL de nuestro proyecto. Luego podemos decir
git 
push - u origin master y eso es prácticamente todo. Así que tenemos que recrear, disculpen,
volver a introducir 
la contraseña, para mi clave RSA y si tenemos suerte y todo funcionó perfectamente. Podremos
ir 
al proyecto y deberíamos ver el archivo README, el cual es el del caso. ¡Bien, eso es todo por 
ahora! Esa es la primera parte del siguiente video, en el cual te mostraré cómo hacer las ramas
(branches) y en realidad 
también a cómo crear una pull request. ¡Gracias por ver este video y hasta pronto!
GitHub en Mac/Linux - Parte 2
Bienvenido a la segunda parte de mi peque�a serie GitHub for Dummies. 
Algo que olvid� en el �ltimo video es c�mo sincronizar en caso de que alguien m s haya hecho
un cambio. 
Bueno. 
Vamos a considerar este repositorio aqu�, no tenemos nada en �l; as� que este es en realidad
el repositorio 
remoto en GitHub. 
As� que, vamos a crear nuevamente un peque�o archivo README, agregar "README: y
entonces digamos "git add" y 
despu�s decimos "git commit" "blahblah" y luego "git push". 
Entonces aqu� tenemos el archivo README y vamos a crear un nuevo archivo en el repositorio
remoto 
que es algo que pasar� si alguien m�s env�a algo a ese repositorio. 
Ver�s un nuevo archivo� y esto est� ahora solamente en el repositorio remoto y no en mi 
(repositorio) local. 
Aqu� puedes ver, est� solamente el archivo README y no el nuevo. 
Para conseguir este nuevo archivo, tan solo dices "git pull" y luego ves aqu� que el nuevo 
tambi�n esta aqu�. 
Pues s�, eso es pr�cticamente todo. 
Luego, digamos que estas, por ejemplo, trabajando en un enorme sub proyecto 
en el repositorio y no quieres interferir con el trabajo principal que se est� ejecutando. 
El trabajo principal es llamado b�sicamente branch, el cual es un "master" y puedes crear tu
propia 
branch. 
Por lo que puedes decir por ejemplo "Git branch mybranch". 
Entonces, dices "git status" aun vemos que estamos aqu� en la master branch. 
Ahora decimos "git checkout mybranch" entonces, ves, nos cambiamos a my branch y ahora 
decimos "git status" y tambi�n como puedes ver estamos en mybranch. 
Ahora lo que hago es... aqu� tenemos esos dos archivos y decimos "# stuff on branch" y aqu� 
decimos "stuffonbranch.txt" por lo que "git add stuffonbranch.txt" entonces "git commit" y
"bla" 
y "git push" 
Ah s�, tambi�n tenemos que crear esta branch de forma remota. 
As� que, ahora hacemos push a la branch remota. 
Ahora podemos ver que mybranch ha sido creada aqu� y puedes ver el contenido del 
archivo en la branch la cual no est� en el master. 
As� que, lo que hacemos ahora aqu� es regresar a la branch principal. 
Para eso debemos usar "git checkout master" y luego digamos "git merge mybranch" 
Por lo que se ha fusionado autom�ticamente as� que aqu� tenemos cosas en la branch al
igual que en mi 
carpeta local. 
Pero aun as� nos damos cuenta que a�n no est� el master, �verdad? 
As� que digamos "git push" y si actualizas ahora ver�s las cosas en la branch. 
Entonces, lo que ha pasado es que hemos fusionado el repositorio de la branch local con el 
repositorio master local y ahora hacemos push del contenido del repositorio master local hacia
el repositorio 
master remote y con eso hemos fusionado la branch nuevamente a la master branch. 
Bueno, eso es todo por ahora. 
En el siguiente video, te mostrar� c�mo crear pull requests y contribuir 
a los repositorios externos.
GitHub en Mac/Linux - Parte 3 (Opcional)
Ok so this is the last video now, on the series 'Git for Dummies'. 
So, I just want to show you how to fork a repository on github, how to commit to a forked 
repository and how to create a pull request. 
So lets consider you want to contribute to the very best and most important github repository 
on the planet. 
This is the coursera repository in the IBM organization which I’m maintaining, and 
lets assume you have found an error in one of those software components. 
I mean its impossible there is an error but just consider there is an error and you want 
to fix it. 
So what we can actually do is, you can either ask me to give you commit rights to that repository 
but its better if you just create a fork of this repository and then commit to your repository, 
to your fork and create a pull request. 
Let me show you how that works, so you see here 529 other folks already forked this repository. 
By the way just give me a star if you like, I want to have 1,000 stars soon! 
Here you can click on fork, and then it asks you where you want to fork it into. 
So this is in the IBM organization, and then I’m forking it into my private account. 
That means I will have a coursera repository in my account here, and you see here even 
its showing me 'forked from IBM/Coursera' Now I can change something, I can either make 
changes directly in here but to make it a bit more complicated, lets actually make the 
changes locally. 
So I clone it, oh I shouldn't forget to show you to add your RSA 
public key to the github repo, no, github system. 
But I will do it later, so now cloning this Coursera repository, this remote repository 
into my local repository. 
You see here again its in the 'romeokienzler' account, which is basically a copy of the 
official IBM one. 
I think we have to wait a bit because its quite huge, I should have set up two little 
test repositories but anyway, lets wait for that long. 
While we are waiting let me show you something else. 
That’s about the SSH keys, and now in our home folder, and in your home folder you have 
an SSH folder. 
I have already created the key so that’s a private key, never give it to anybody and 
never ever show it, the contents to anybody. 
And you create those and you can set a passphrase for the keys and I will put the commands for 
creating those into the description of this video. 
But that’s the public key that you can safely give to anybody and share with anybody. 
So I can also do that here, so I can show you the contents. 
So see, that’s the public key, and what I do is if I go to the github page, I have 
to go to, I think the account settings, SSH and GPG keys. 
You see here, here you have to add the key, so you can say new SSH key and you just paste 
the contents of the public key. 
And now I’m not doing that because I’ve already added it. 
But that’s all you need to do in github! 
And from now on you can use SSH because only you have the corresponding private key to 
that public key here therefore you can safely authenticate against github. 
So you also know this and I’m hoping that in the meanwhile, this other cloning is done. 
So go to coursera and lets have a look into that repository and so we have the readme 
for example, lets have a look at the readme. 
Maybe there is something I can improve on the readme. 
So this is the github project for the following 
coursera specialization. 
So lets put Coursera into a capital and save. 
Ok as you remember I need to say 'git add' and then if I say 'git status' the readme 
file is modified. 
I say ok, 'git commit'. 
I say now message and now it’s important since it’s a real repository I just can’t 
write a crap message. 
'corrected little typo' and now I say git, push OK. 
So now the corrected readme is in my local repository and in the remote repository. 
But only in my private account, if I go to this repository here, so in my private account, 
then if I click on readme. 
So first of all you see here 21 seconds ago it has been changed. 
You see here the commit message 'corrected little typo'. 
And if you click on the readme you see here now the C is now capitalcase. 
Now I want to get this change back into the official repository IBM/Coursera. 
And you see here there is a contributor, so she also committed some stuff via pull request 
into the main repository so its straightforward. 
You can create a pull request easily here, on that button and then the difference between 
my repository and the official repository is just used and you see here the only difference 
is here the little typo correction and say create pull request. 
So that’s something I’m doing as a potential contributor and I say create pull request. 
So now I myself as I’m an administrator of the IBM repository, I will get an email 
and you see here I’m already forwarded (to the IBM repository) so let’s consider I 
am not Romeo, I am somebody else the administrator of the repository and here I see there is 
a pull request coming in and I will review it So I see ok someone fixed a little typo 
in my repository that’s something that I can definitely accept. 
So I say merge pull request, confirm merge and usually what I say is merged, thanks a 
lot, or so, to be polite to your contributors. 
Now here I’m in the Coursera repository and if you now click on readme you see here, 
there’s a capitalcase and that’s basically how it looks. 
Now here you see he commit and the commit message. 
And that’s basically all, so I hope this helped you a bit and with that knowledge you 
will survive around eighty percent of your git and github problems and work. 
If you have specific questions feel free to ask me in the discussion forum or in the comments 
below the video and thanks for watching and have a nice day! 
Bye! 
Thank you very much!
Ok so this is the last video now, on the series 'Git for Dummies'. So, I just want to show you
how to fork a repository on github, how to commit to a forked repository and how to create
a pull request. So lets consider you want to contribute to the very best and most important
github repository on the planet. Thi: agregado a la selección Presiona [CTRL + S] para
guardar como nota.

Comenzando con Jupyter Notebooks


Así que volviendo a navegador Anaconda, aquí también podemos iniciar, Jupyter Lab. 
Así que ahora luce un poco más complicado, pero en realidad no lo es porque lo que puedes 
ver aquí es también un Jupyter Notebook. 
Ya que siempre puedes descargar dicho Jupyter Notebook e importarlo a un Jupyter 
Notebook normal. 
O también puedes importarlo, por ejemplo, a Watson Studio o cualquier otro entorno jupyter
alojado 
en la nube. 
Por lo tanto, todos son compatibles y esto es grandioso y lo que puedes ver aquí es 
que hay algunas ventanas más. 
Así que aquí ves una pequeña sección, por lo que esto es un explorador de archivos, y luego lo
otro 
que ves aquí es que tienes un numero de sesiones de kernel. 
Entonces, una sesión de kernel está más o menos adjunta a un Jupyter Notebook. 
Así que, esto quiere decir que un Jupyter Notebook está en proceso en la sesión kernel y la sesión
kernel 
está ejecutando en si tu código. 
Aquí ves este Jupyter Notebook es por supuesto rendenrizado en mi navegador web y eso 
se comunica con el Remote Kernel. 
Y el kernel es encapsulado en el entorno de ejecución, en este caso, el intérprete ordinario 
Python. 
También puedes cerrarlas y reiniciarlas, aquí tienes algunas preferencias y una lista 
de las pestañas abiertas. 
Así que las cosas que puedes hacer ahora, por ejemplo, crear un nuevo terminal y ves que aquí
hay una 
segunda pestaña la cual se abre para que puedas mezclar y comparar los Jupyter Notebooks al
igual que los terminales. 
Igualmente puedes arrastrarlos y soltarlos aquí. 
También puedes dividir y vamos a agregar otro terminal, por ejemplo, también puedes ponerlo
aquí o aquí. 
Lo cual es una buena forma de tener una visión general de tu trabajo. 
Ahora, crea un nuevo Python Notebook aquí y luego vamos a poner esto aquí. 
Bueno ahora tienes dos notebooks y dos terminales abiertos al mismo tiempo y sí, esto 
es grandioso y es básicamente todo. 
Ahora vamos a cerrarlas todas. 
He abierto aquí un notebook de mi curso de aplicación de Inteligencia Artificial de Coursera y
puedes ver aquí 
que podemos ejecutar el intérprete de comandos. 
Así que, siempre que veas un signo de exclamación puedes ejecutar directamente los intérpretes
de comandos, así 
que hagámoslo aquí. 
Esto es llamado “actualización de instalación pip” y algunos paquetes aquí ya están 
Instalados, pero otros están siendo recolectados. 
Y esto es una forma de mejor práctica. 
Siempre hago al principio de casa notebook una instalación pip, la cual 
me garantiza que siempre estoy en las versiones correctas de los paquetes de software
dependientes. 
Ves la estrella aquí, esta significa que la celda actual se acaba de ejecutar 
y una vez que la ejecución llegue a su fin, verás un número. 
Y un número es una identificación de tarea (task ID) y es un número creciente. 
Basado en el número que sabrás en qué orden has ejecutado las celdas. 
También ves aquí, que el Jupyter Notebook se está ejecutando realmente. 
Ahora está hecho, por lo tanto, vemos aquí uno y lo que siempre hago es comprobar las 
versiones correctas instaladas. 
Como puedes ver aquí, estoy comprobando TensorFlow one fourteen y Keras 225. 
Y si ese no es el caso, estoy haciendo una excepción, así que no te preocupes por las
advertencias 
porque estamos oficialmente en TensorFlow 2.x. 
Por lo que necesito actualizar este notebook de todas formas. 
En caso de que tengas una larga tarea en ejecución y no se detenga, siempre puedes reiniciar 
el kernel. 
Así que hagamos esto aquí y quiero decir que con frecuencia reinicies el kernel y borres todas las
salidas porque, 
una vez que la salida se haya ido, estoy viendo realmente que el kernel ha sido reiniciado. 
Así que ves aquí, todas tus salidas se han ido lo que quiere decir que has cerrado 
el Python interpreter y creado uno nuevo en segundo plano. 
Otra cosa la cual puede ser interesantes, en realidad, vamos a crear un nuevo notebook. 
Así que tienes aquí, tú salida uno. 
Puedes decir, “colapsar todo el código” o “colapsar toda la salida”. 
Y abrir nuevamente una celda diferente, de esta forma podrás mejorar la visibilidad del
contenido importante. 
Eso es básicamente todo. 
Así que hay más cosas por explorar, pero pienso que el conocimiento puede sobrevivir. 
Pienso que he cubierto alrededor del 80% de lo que es importante. 
Tal vez una última cosa, así que exporta este notebook en diferentes formatos y prueba 
las dispositivas “reveal.js”. 
Ábrelo en el navegador Firefox inmediatamente y verás que ahora es una presentación de
reveal.js.

Comenzando con Jupyter Lab


Así que volviendo a navegador Anaconda, aquí también podemos iniciar, Jupyter Lab. 
Así que ahora luce un poco más complicado, pero en realidad no lo es porque lo que puedes 
ver aquí es también un Jupyter Notebook. 
Ya que siempre puedes descargar dicho Jupyter Notebook e importarlo a un Jupyter 
Notebook normal. 
O también puedes importarlo, por ejemplo, a Watson Studio o cualquier otro entorno jupyter
alojado 
en la nube. 
Por lo tanto, todos son compatibles y esto es grandioso y lo que puedes ver aquí es 
que hay algunas ventanas más. 
Así que aquí ves una pequeña sección, por lo que esto es un explorador de archivos, y luego lo
otro 
que ves aquí es que tienes un numero de sesiones de kernel. 
Entonces, una sesión de kernel está más o menos adjunta a un Jupyter Notebook. 
Así que, esto quiere decir que un Jupyter Notebook está en proceso en la sesión kernel y la sesión
kernel 
está ejecutando en si tu código. 
Aquí ves este Jupyter Notebook es por supuesto rendenrizado en mi navegador web y eso 
se comunica con el Remote Kernel. 
Y el kernel es encapsulado en el entorno de ejecución, en este caso, el intérprete ordinario 
Python. 
También puedes cerrarlas y reiniciarlas, aquí tienes algunas preferencias y una lista 
de las pestañas abiertas. 
Así que las cosas que puedes hacer ahora, por ejemplo, crear un nuevo terminal y ves que aquí
hay una 
segunda pestaña la cual se abre para que puedas mezclar y comparar los Jupyter Notebooks al
igual que los terminales. 
Igualmente puedes arrastrarlos y soltarlos aquí. 
También puedes dividir y vamos a agregar otro terminal, por ejemplo, también puedes ponerlo
aquí o aquí. 
Lo cual es una buena forma de tener una visión general de tu trabajo. 
Ahora, crea un nuevo Python Notebook aquí y luego vamos a poner esto aquí. 
Bueno ahora tienes dos notebooks y dos terminales abiertos al mismo tiempo y sí, esto 
es grandioso y es básicamente todo. 
Ahora vamos a cerrarlas todas. 
He abierto aquí un notebook de mi curso de aplicación de Inteligencia Artificial de Coursera y
puedes ver aquí 
que podemos ejecutar el intérprete de comandos. 
Así que, siempre que veas un signo de exclamación puedes ejecutar directamente los intérpretes
de comandos, así 
que hagámoslo aquí. 
Esto es llamado “actualización de instalación pip” y algunos paquetes aquí ya están 
Instalados, pero otros están siendo recolectados. 
Y esto es una forma de mejor práctica. 
Siempre hago al principio de casa notebook una instalación pip, la cual 
me garantiza que siempre estoy en las versiones correctas de los paquetes de software
dependientes. 
Ves la estrella aquí, esta significa que la celda actual se acaba de ejecutar 
y una vez que la ejecución llegue a su fin, verás un número. 
Y un número es una identificación de tarea (task ID) y es un número creciente. 
Basado en el número que sabrás en qué orden has ejecutado las celdas. 
También ves aquí, que el Jupyter Notebook se está ejecutando realmente. 
Ahora está hecho, por lo tanto, vemos aquí uno y lo que siempre hago es comprobar las 
versiones correctas instaladas. 
Como puedes ver aquí, estoy comprobando TensorFlow one fourteen y Keras 225. 
Y si ese no es el caso, estoy haciendo una excepción, así que no te preocupes por las
advertencias 
porque estamos oficialmente en TensorFlow 2.x. 
Por lo que necesito actualizar este notebook de todas formas. 
En caso de que tengas una larga tarea en ejecución y no se detenga, siempre puedes reiniciar 
el kernel. 
Así que hagamos esto aquí y quiero decir que con frecuencia reinicies el kernel y borres todas las
salidas porque, 
una vez que la salida se haya ido, estoy viendo realmente que el kernel ha sido reiniciado. 
Así que ves aquí, todas tus salidas se han ido lo que quiere decir que has cerrado 
el Python interpreter y creado uno nuevo en segundo plano. 
Otra cosa la cual puede ser interesantes, en realidad, vamos a crear un nuevo notebook. 
Así que tienes aquí, tú salida uno. 
Puedes decir, “colapsar todo el código” o “colapsar toda la salida”. 
Y abrir nuevamente una celda diferente, de esta forma podrás mejorar la visibilidad del
contenido importante. 
Eso es básicamente todo. 
Así que hay más cosas por explorar, pero pienso que el conocimiento puede sobrevivir. 
Pienso que he cubierto alrededor del 80% de lo que es importante. 
Tal vez una última cosa, así que exporta este notebook en diferentes formatos y prueba 
las dispositivas “reveal.js”. 
Ábrelo en el navegador Firefox inmediatamente y verás que ahora es una presentación de
reveal.js.

Arquitectura Jupyter
Así que vamos a presentar la arquitectura Jupyter. 
En la izquierda tienes por supuesto el usuario, el cual interactúa con un navegador y 
el componente central en Jupyter es el servidor de notebook. 
Así que el servidor de notebook está cargando y almacenando el archivo jupyter notebook y
envía el contenido 
html a el navegador. 
Una vez que este contenido es renderizado, este interactúa con el servidor de notebook usando 
los websockets. 
Por lo tanto, es una aplicación dividida. La Interfaz de Usuario (UI) se ejecuta en el navegador
usando javascript. 
Y el servidor de notebook es el responsable de mantener el estado y la segunda cosa es que 
se comunica con el llamado kernel. 
Así que el kernel es un wrapper o envoltorio el cual envuelve el marco de ejecución por ejemplo
el intérprete 
de python. 
Así que un problema que podría ser encontrado si estás ejecutando una carga pesada en jupyter
o jupyter 
Lab es que todo está instalado en una sola maquina bien sea en tu computadora portátil o en
una maquina servidor. 
Por ejemplo, si estas usando Amazon Sagemaker, tienes jupyter notebooks. 
Pero, todo está restringido a la máquina, la instancia EC2 que has seleccionado anteriormente. 
Y otra desventaja es por supuesto, que si no estás utilizando la máquina, aun así pagas 
por ella. 
Y si esto no es suficiente, entonces solamente tienes que esperar un largo periodo o tan solo es
imposible 
ejecutar tu carga de trabajo. 
Entonces ves que aquí está ilustrado, tenemos aquí una sola máquina y los usuarios múltiples
por 
ejemplo, están ejecutando múltiples kernels y con el tiempo, la memoria principal es agotada y 
simplemente se colapsa. 
¡Así que BOOM! 
Y la solución a esto es jupyter enterprise gateway, la cual IBM creó y es de 
código abierto la cual también es parte ahora de la distribución oficial de código abierto de
jupyter. 
La idea es que, tienes un proxy y detrás de este hay un clúster de 
máquinas y ese proxy decide dónde poner los kernels individuales y los kernels son 
entonces ejecutados en estas máquinas. 
Para entrar un poco más en detalles, aquí estoy utilizando un diagrama de arquitectura de
jupyter enterprise 
gateway. Por lo que tienes aquí, a los usuarios a tu izquierda como es usualmente, hay instancias
de jupyter 
notebook ejecutándose en el navegador. 
Así que es una aplicación javascript y esta se comunica con el servidor usando websockets, 
Luego tienes jupyter lab y después, jupyter enterprise gateway comienza. 
En contraste jupyter lab habla con un kernel este habla con jupyter enterprise gateway, 
el cual actúa como un proxy. 
Así que básicamente actúa como un kernel pero en realidad reenvía todas las llamadas al kernel 
remoto y este se ejecuta dentro de un Kubernetes POD. 
Que es básicamente un contenedor de Kubernetes que puede ser programado en cualquier
miembro del 
clúster. 
Y lo más grandioso es que ahora puedes iniciar tantos kernels como quieras y 
Kubernetes se encarga de la distribución de ellos en el clúster. 
Así que, por supuesto no quiero iniciar watson studio aquí, pero puedes ver aquí que 
en segundo plano, que mientras este notebook ha sido cargado el kernel ha sido iniciado en un
miembro remoto 
del Kubernetes cluster. 
Y lo que sea que se ejecute aquí ahora lo hará a través de jupyter enterprise gateway. 
Solamente estoy mostrando watson studio aquí porque no tengo una instalación de código
abierto disponible 
la cual usa jupyter enterprise gateway. 
Si ahora, por ejemplo, revisas esta visión general del proyecto, entonces watson studio pregunta

jupyter enterprise gateway acerca del estado de los diferentes contenedores, los cuales están
encapsulando los 
kernels. 
Y como ves aquí, tengo un entorno activo. 
Es este de aquí, aquí puedes ver la configuración del hardware y esto está realmente
ejecutándose 
en algún lugar de la nube de los contenedores de IBM en Kubernetes. 
Lo cual es grandioso y una última cosa, quiero mostrarte aquí que tú puedes especificar 
entornos y puedes adjuntar ambientes a los notebooks. 
Así que básicamente puedes seleccionar en cuanto porcentaje de CPUs y RAM puede ejecutarse
el notebook. 
Eso es particularmente muy útil, ejemplo, en caso de tener una tarea ETL para la integración de
datos la cual 
usa el lenguaje spark, sólo tienes que usar un spark notebook. 
Y en caso de ser una tarea pesada puedes aumentar el número de ejecutores. 
O tienes por ejemplo un tensorflow notebook el cual luego toma estos datos y hace algo de
capacitación. 
Entonces, por supuesto, también puedes incrementar el número de CPUs y la memoria principal. 
Eso es básicamente todo y espero que hayas aprendido algo acerca de jupyter, la arquitectura de
jupyter 
notebooks y en caso de tener algunas preguntas, por favor publícalas en la sección de
comentarios en la parte inferior o 
utiliza el foro de discusión coursera. 
¡Muchas gracias, adiós!

Laboratorio: Jupyter Notebooks –


Principios
Ejercicio 1 – Crear un nuevo notebook en Python
1. Si ya tiene Skills Network Labs abierto en una pestaña, puede hacer clic en JupyterLab en la
página principal.

2. Para crear un nuevo notebook, haga clic en cualquiera de los idiomas en "Notebook".

Ejercicio 2 - Escribir y ejecutar el código

1. En su nuevo notebook vacío (del Ejercicio 1), haga clic dentro de la celda de código gris y
escriba algún código, como "1 + 1" (sin comillas).
2. Ejecute el código, ya sea haciendo clic en el botón Play en el menú arriba del notebook, o
presionando Shift+Enter en su notebook.
3. Debería ver en la salida, "2".
4. Intente ejecutar otro código (intente operaciones matemáticas simples).
5. ¡Grandioso! Ahora sabes cómo escribir y ejecutar código en Jupyter Notebooks

Ejercicio 3 - Crear nuevas celdas


1. En su Jupyter notebook, primero haga clic en cualquiera de las celdas existentes para
seleccionar la celda.
2. En el menú, haga clic en "Insert", luego "Insert Cell Above" o "Insert Cell Below".
3. ¡Grandioso! Ahora ya sabe cómo insertar nuevas celdas en Jupyter Notebooks. Tenga en cuenta
que puede usar atajos del teclado como: [a] - Insertar una Celda arriba; [b] – Insertar una celda
abajo.
Ejercicio 4 - Crear celdas Markdown y añadir texto
1. En su notebook, haga clic en cualquier celda de código, y en el menú desplegable de la parte
superior, cambie el tipo de celda de "Código" a "Markdown". Como notará, no puede crear
celdas  "Markdown" sin crear primero celdas de "Código" y convertirlas a "Markdown".
2. En la celda de Markdown, escriba un texto como "Mi título".
3. Para renderizar el texto de la celda markdown, asegúrese de que la celda esté seleccionada
(haciendo clic dentro de ella) y pulse Play en el menú o Shift+Enter.
4. ¡Su celda Markdown debe estar ahora renderizada!
5. Para editar la celda de Markdown, haga doble clic en cualquier lugar de la celda. Tenga en cuenta
que puede usar el atajo de teclado: [m] - Convertir la celda en Markdown

Taller - Jupyter Notebook – Más


características
Este taller es una continuación del anterior.

Note: Si ya tiene abierto JupyterLab en Skills Network Labs en una pestaña, siga usando esa
pestaña. De lo contrario, haga clic en el botón "Open Tool" de la parte inferior para iniciar
Jupyter Notebooks.

Ejercicio 5 - Cambiar el nombre de su notebook


1. En la lista de notebooks del panel derecho, haga clic en la flecha (>) a la izquierda del nombre del
cuaderno para ampliar la lista de opciones.
2. Haga clic en "Rename" para renombrar su cuaderno a algo como "Mi_Cuaderno.ipynb".

Ejercicio 6 - Guarde y descargue su Jupyter notebook de Skills Network Labs a su


computadora
Aunque sus datos y notebooks se conservan en su cuenta después de cerrar la sesión, a veces
puede necesitar descargar su notebook a su ordenador.

1. Para guardar, haga clic en el botón “Save” del menú, o vaya a "Save Notebook".
2. Para descargar el notebook, haga clic en el panel Archivos para abrir la lista. Navegue hasta su
cuaderno y haga clic con el botón derecho del ratón sobre él para descargarlo.

Ejercicio 7 - Subir un Jupyter notebook a Skills Network Labs


1. Para subir un Jupyter notebook desde su ordenador a Skills Network Labs, arrastre y suelte un
archivo .ipynb desde su ordenador, directamente al navegador. Puede usar el cuaderno que
descargó del Ejercicio 6.
2. Su notebook debería abrirse automáticamente una vez que se haya terminado de subir.

Ejercicio 8 - Cambie su núcleo (a Python 3, R) en JupyterLab


1. Con un notebook abierto, haga clic en el nombre del núcleo (por ejemplo, Python 3) en la
esquina superior derecha del notebook para abrir una ventana emergente y poder cambiarlo a
un lenguaje diferente.
Este curso utiliza una herramienta de terceros, Taller - Jupyter Notebook – Más características,
para mejorar tu experiencia de aprendizaje. La herramienta hará referencia a información básica,
como tu nombre, correo electrónico e ID de Coursera.
Código de honor de Coursera

Taller – Jupyter Notebook - Características


avanzadas
Este taller es una continuación del anterior.

Nota: Si ya tiene abierto en una pestaña JupyterLab en Skills Network Labs, siga usando esa
pestaña. De lo contrario, haga clic en el botón "Open Tool" en la parte inferior para iniciar
JupyterLab.

Ejercicio 9 - Estilo de Markdown avanzado

1.  Puede escribir código HTML en tus celdas de Markdown. Intente ejecutar el siguiente código
HTML en una celda de Markdown: <a href=https://www.cognitiveclass.ai>Clase cognitiva</a>.
Ahora debería ver un hipervínculo a https://www.cognitiveclass.ai que aparece como "Clase
Cognitiva".
2. También puede usar el formato Markdown. Por ejemplo, para usar un encabezado H1, intente
ejecutar lo siguiente en una celda de Markdown: # Header 1. Puede encontrar más reglas para el
formato de Markdown en esta hoja de trucos de
Markdown: https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet
3. Usando sólo Markdown, intenta crear una tabla, una lista de artículos de compra, e intenta
insertar una imagen.

Lectura: Jupyter Notebook en Internet


Hay miles de interesantes Jupyter Notebooks disponibles en internet para que
aprendas. Una de las mejores fuentes es: https://github.com/jupyter/jupyter/wiki/A-
gallery-of-interesting-Jupyter-Notebooks

Es importante notar que puedes descargar tales Notebooks a tu computadora local o


importarlos a una herramienta de notebook basada en la nube para que puedas
volver a ejecutar, modificar y seguir lo que se explica en el notebook.

Con frecuencia Jupyter Notebook ya está compartido en una vista renderizada. Esto
significa que puedes verlo como si estuviera funcionando localmente en tu máquina.
Pero a veces, la gente sólo comparte un enlace al archivo de Jupyter (que se puede
distinguir por la extensión *.ipynb). En este caso puedes simplemente tomar la URL
de ese archivo y pegarla en el NB-Viewer => https://nbviewer.jupyter.org/

La lista anterior te da un muy buen comienzo con una enorme colección de


materiales para explorar. Por lo tanto, es tal vez más útil para darte algunos consejos
interesantes sobre notebooks. Como hemos cubierto algunos ejemplos con los datos
de juguetes (toy data) en los laboratorios, permíteme señalar algunos trabajos que
utilizan estos datos y que van más allá en el camino de la ciencia de los datos.
Además, como hemos cubierto las diferentes tareas de la ciencia de los datos,
también proporcionaremos un notebook de ejemplo para cada uno de ellas.
Primero se comienza con el análisis exploratorio de datos, por lo que este notebook
es muy
recomendable: https://nbviewer.jupyter.org/github/Tanu-N-Prabhu/Python/blob/
master/Exploratory_data_Analysis.ipynb

Para la integración de datos/limpieza a menor escala, a menudo se utiliza la librería


de Python “pandas”. Por favor, echa un vistazo a este
notebook: https://towardsdatascience.com/data-cleaning-with-python-using-
pandas-library-c6f4a68ea8eb

Si quieres experimentar ya lo que es la agrupación, echa un vistazo a


esto:https://nbviewer.jupyter.org/github/temporaer/tutorial_ml_gkbionics/blob/
master/2%20-%20KMeans.ipynb

Y finalmente, si quieres ir por un notebook más profundo sobre el conjunto de datos


de “iris”, mira aquí: https://www.kaggle.com/lalitharajesh/iris-dataset-exploratory-
data-analysis

Qué es RStudio IDE?


Bien ahora vamos a echar un vistazo a RStudio. 
RStudio es un IDE lo que significa un Entorno de Desarrollo Integrado. 
Está hecho para el lenguaje de programación R. R es un lenguaje de programación estadístico el
cual 
ha sido derivado del lenguaje S de código cerrado. 
Por lo tanto, R es de código abierto, RStudio es de código abierto y es totalmente gratis. 
La estructura central de datos en R es un marco de datos, por lo que tenemos aquí una ventana
que contiene 
un editor y debajo tenemos una ventana que contiene una consola. 
Por lo que el intérprete de R es el intérprete interactivo, así que tienes acceso a él aquí 
en cualquier momento, pero es muy útil y si tienes un editor de texto aquí. 
Siempre puedes ejecutar el código que estas escribiendo aquí en el editor de texto. 
En la parte superior derecha tienes otra ventana donde un entorno es mostrado para que todas
las variables 
en el heap (montículo) sean accesibles y también puedas inspeccionarlas. 
Y si haces un gráfico, estos terminan aquí. 
Así que vamos a comenzar con el marco de datos. 
En orden de saber dónde estamos, decimos, 'getwd' (que quiere decir) directorio de trabajo. 
Aquí estamos en la carpeta de inicio. 
Esto es grandioso, ahora vamos a decir 'data frame='. 
Puede que hayas visto este símbolo aquí, es tan solo una pequeña diferencia en las funciones
calls. 
No te preocupes acerca de esto a menos que lo utilices en las funciones calls. 
Ahora puedes usar el operador de asignación ordinario, lo que hace que el nuestro se vea un
poco menos feo.
Reproduce el video desde :1:55 y sigue la transcripción1:55
Ahora digamos 'read.csv' y podemos decir, ir a mi carpeta de descargas y podemos 
ver todos los archivos posibles. 
Por lo que se comenzó con un c-u para sus mensajes de clientes. 
Y con las teclas alt + enter podemos ejecutar estas líneas y después esta línea es copiada a la
consola 
y después se ejecuta. 
Al mismo tiempo que ves aquí, el marco de datos contiene básicamente los datos del 
csv y ahora puedes ver el contenido del marco de datos si dices ver y d-f. 
Ahora ves aquí que ya se muestra dentro de la ventana del editor. 
Lo que notamos es que la primera línea ha sido interpretada como el encabezado (header), pero
es algo que 
no queremos. 
Ahora podemos decir 'header = FALSE'. 
Es muy útil que tengas todos los complementos aquí, siempre saber qué parámetros tiene la
función.
Reproduce el video desde :3:5 y sigue la transcripción3:05
En caso de que ahora mires el nuevo marco de datos, verás que la primera línea esta aparte de 
los datos y no del encabezado. 
Esta es la forma como puedes cargar los datos. 
Por supuesto, igualmente puedes cargar los datos de sistemas de bases de datos remotas,
puedes usar el formato ODBC 
pero eso está fuera del alcance de este tutorial. 
Lo que quiero mostrarte es otra forma de importar los datos. 
Ahora puedes decir, importar desde el csv y entonces el código es realmente creado por ti. 
Vamos a abrir el archivo nuevamente, básicamente haciendo lo mismo, pero ahora tienes la
idea. 
Tienes una vista previa de los datos con el mismo problema que tienes la primera línea
interpretada como encabezado.
Reproduce el video desde :3:49 y sigue la transcripción3:49
En realidad, puedes desmarcar está aquí y después es como debería estar. 
Y luego dices importar y puedes darte cuenta de que tienes un segundo objeto aquí en el *heap*
el cual 
es llamado mensajes de clientes, que también es un marco de datos y también es mostrado
aquí. 
Con esto concluye el primer video. 
En el próximo video te mostraré cómo trabajar con las librerías y luego de eso te mostraré 
cómo crear los gráficos.

Instalación de paquetes y carga de


Librerías en RStudio IDE
Una de las principales fortalezas de R no es la sintaxis agradable, por supuesto, es la 
cantidad de paquetes. 
Por lo que si visitas cran.r-project.org, este es el The Comprehensive R Archive Network (CRAN). 
Tienes un enlace para los paquetes y puedes ver aquí la tabla de paquetes disponibles. 
También puedes ordenar por fecha o nombre, por lo que tienes cerca de 15,349 paquetes. 
Y eso es demasiado, así que soy la persona del audio. 
Vamos a escuchar el audio. 
Hay un paquete de audio. 
Si quieres instalar dicho paquete en R, la verdad que es bastante sencillo. 
Lo que tienes que hacer es decir, “install.packages” y después dices el nombre del paquete, 
“audio” y después solamente lo ejecutas. 
Me pregunta si quiero compilarlo de la fuente, eso está bien. 
Muchos de los paquetes de R están escritos en C o C++, así que necesitas tener un C compiler
instalado 
y después el paquete es compilador en tu computadora para ti. 
Esto se hace, para poder usar el paquete que necesitas cargarlo. 
Vamos a la opción library o también puedes decir require, no importa y después di audio. 
Por lo que ahora el paquete está cargado y puedes verlo aquí también, que el paquete de audio
está cargado ahora. 
Por lo tanto, ya puedes usarlo. 
Así que, si quieres echar un vistazo al código fuente o ver algunos ejemplos, simplemente puedes
hacer un drill 
down del archivo R. 
Voy a visitar esta URL y verás que aquí hay un pequeño ejemplo. 
Así que esto debería reproducir una onda sinusoidal, veamos si puedo conectar mi micrófono 
con mi altavoz. 
En caso de que eso funcione, ¿Puedes escuchar eso? 
Bien, entonces ese es un ejemplo de lo fácil que es instalar y usar los herr en R. y el problema 
no es que no encontrarás un paquete para una tarea específica, el problema es que tienes 
más de cinco o diez paquetes distintos para una tarea específica. 
Y debes leer demasiado y decidir cuál estás usando. 
Así que, en el siguiente video, te mostraré como graficar en R studio usando ggplot.

Graficando dentro de RStudio IDE


Música] 
Así que, antes de que podamos graficar algo que solo requiere unos pocos datos 
que es muy fácil de crear. 
Esa es una función rnorm que toma muestras de una distribución normal. 
Entonces por defecto tenemos una media cero y una desviación estándar uno, mostremos cien
puntos aquí. 
Y vamos a hacer lo mismo para el eje y. 
de hecho, aumentamos un poco la desviación estándar. 
Y ahora creamos un marco de datos y es un marco de puntos de datos y simplemente decimos
(x,y). 
Si ahora ves este marco de datos aquí, 
observamos las dos columnas 
y ves aquí que los números son un poco más elevados 
porque la desviación estándar es mayor. 
Y ahora podemos graficarlo. 
Así que tenemos que importar una librería de (ggplot2). 
Y entonces podemos realmente graficarlo, entonces decimos ggplot 
más los parámetros, por supuesto el marco de datos 
No entraré en detalles aquí 
porque ggplot es relativamente complejo 
pero es una librería muy, muy poderosa. 
Básicamente estamos diciendo aquí que queremos dibujar puntos. 
Por lo que ves aquí en el eje de las X y el eje de las Y 
estamos trazando esos puntos. 
Bueno, ahora tracemos algo más bonito. 
Entonces hay un marco de datos incorporado en R llamado mtcars. 
Y tiene distintos tipos de autos y sus propiedades. 
Por lo que es un excelente conjunto de datos para jugar. 
Y como te dije ggplot2 es relativamente complejo 
así que solamente esto copiando y pegando el código 
para poder graficar algo realmente bonito. 
Así que es básicamente el peso del auto sobre el kilometraje. 
Y como puedes ver aquí cuanto más pesado es el auto, 
menos kilometraje tiene. 
Además de eso, también estas dibujando 
una línea de regresión y también un intervalo de confianza o una desviación estándar. 
Así que eso es excelente con tan solo dos líneas de código 
Puedes crear gráficos los cuales puedes encontrar 
en las mejores publicaciones (científicas) porque los mejores editores 
con frecuencia utilizan R y ggplot2 para crear los gráficos. 
Bueno, espero que esto te ayude. 
En caso de tener más preguntas, 
por favor házmelo saber en la sección de comentarios. 
Y que tengas un buen día. ¡Adiós! 
[Música]

Laboratorio: Rstudio – Principios


Laboratorio: Rstudio – Principios 
Este laboratorio te presenta a R y RStudio. Primero tenemos que instalarlo.

Por favor, instala R apropiado para tu sistema operativo. Puedes obtenerlo


aquí: https://cran.rstudio.com/

Una vez que hayas instalado R, por favor descarga e instala el RStudio apropiado
para tu sistema operativo. Puedes encontrarlo
aquí: https://rstudio.com/products/rstudio/download/#download

1. Inicia RStudio. Deberías ver algo como esto:


2. Ahora haz clic en el pequeño símbolo “plus”  arriba a la izquierda y selecciona “R
Script” . Esto te da lo siguiente:

3. Ahora cargamos el conjunto de datos de iris que ya deberías conocer de los


laboratorios anteriores. Por favor, introduce las siguientes líneas en la ventana del
editor que acaba de aparecer. Luego selecciónalas todas de tal manera que se
vuelvan azules. Luego haz clic en el pequeño icono de ejecución  justo encima de la
ventana del editor.

library (datasets)

data(iris)

View(iris) 

Luego, selecciónelos todos de modo que se vuelvan azules. Luego haga clic en el
pequeño icono de ejecución que se encuentra justo encima de la ventana del editor.

4. Se le dirige directamente a la pestaña de vista de datos para inspeccionar su


conjunto de datos:
5. Podemos ver que hay cinco columnas en este conjunto de datos y que las primeras
cuatro son de punto flotante y la última es la etiqueta de tipo cadena de datos que
contiene el valor de la categoría de nuestro conjunto de datos. También vemos que
tenemos 150 entradas en total de las cuales estamos viendo las primeras 19. Ahora
queremos saber cuántas especies diferentes hay presentes en el conjunto de datos.
Por lo tanto, por favor escribe el siguiente comando en la ventana del editor y haz
clic en el icono de ejecución:

unique(iris$Species)

y haga clic en el icono de ejecución:


6. En la ventana de Console, en la parte inferior, verás el resultado del comando
ejecutado y sabrás que sólo hay tres especies diferentes presentes en el conjunto de
datos. Ahora es el momento de mirar el conjunto de datos con más detalle.
Crearemos un gráfico similar como ya hemos hecho en el laboratorio de Jupyter.
Para ello, primero tenemos que instalar el paquete ggplot2. Por favor, escribe y
ejecuta el siguiente comando:

install.packages(c("GGally", "ggplot2"))
7. Ahora que has instalado las librerías necesarias para crear algunos buenos
gráficos, vamos a ejecutar los siguiente comando:

library(GGally)

ggpairs(iris, mapping=ggplot2::aes(colour = Species))

8. Ahora verás el siguiente gráfico en la ventana “plots”:

9. Esto nos da mucha información para una sola línea de código. Primero, vemos las
distribuciones de datos por columna y especies en la diagonal. Luego vemos todos
los diagramas de dispersión por pares en los recuadros a la izquierda de la diagonal,
de nuevo desglosados por el color. Por ejemplo, es obvio ver que se puede dibujar
una línea para separar la “setosa” de la “versicolor” y la “virginica”. En cursos
posteriores, por supuesto enseñaremos cómo las especies superpuestas pueden ser
separadas también. Esto se llama aprendizaje automático supervisado usando
clasificadores no lineales, por cierto. Luego se ve la correlación entre las columnas
individuales de los recuadros hasta la diagonal, lo que confirma nuestro
pensamiento de que el “setose” es más diferente, y por lo tanto más fácil de
distinguir, que el “versicolor” y la “virginica”, ya que es un valor de correlación
cercano a uno significa una gran similitud, mientras que un valor cercano a cero
significa una menor similitud. Los gráficos restantes de la derecha se llaman “box-
plots” y las de la parte inferior se llaman “histograms” pero no entraremos en
detalles aquí y lo guardaremos para un curso más avanzado de esta serie.

Esto concluye este laboratorio, ¡espero que lo hayas disfrutado!

Laboratorio: Creación de un mapa


interactivo en R
Bienvenidos al 2o laboratorio RStudio en el que creamos un mapa interactivo
usando dos librerías. “Shiny”, que es una asombrosa librería para crear prototipos de
interfaces de usuarios interactivas en R y “leaflet” que nos permite usar los datos de
“OpenStreetMap” para crear un mapa interactivo. “Shiny” usará “leaflet” como uno
de sus componentes de UI (como cualquier otro componente de UI como botón,
deslizador o campo de texto).

1. Instala los siguiente paquetes, puedes hacerlo simplemente pegando y ejecutando el


siguiente comando en la ventana inferior izquierda de
“Console”:install.packages("shiny")install.packages("leaflet")

1. Pasa el siguiente código en una nueva ventana de edición de R en


RStudio:library(shiny)library(leaflet)
r_colors <- rgb(t(col2rgb(colors()) / 255))

names(r_colors) <- colors()

ui <- fluidPage(

  leafletOutput("mymap"),

  p(),

  actionButton("recalc", "New points")

server <- function(input, output, session) {

  

  points <- eventReactive(input$recalc, {

    points = cbind(rnorm(40) * 2 + 13, rnorm(40) + 48)

    return(points)

  }, ignoreNULL = FALSE)

  
  observeEvent(input$Map_shape_click, { # update the location selectInput on map
clicks

    output$coordinates <- renderText({ 

      "You have selected this"

    })

  })

  

  output$mymap <- renderLeaflet({

    leaflet() %>%

      addProviderTiles(providers$Stamen.TonerLite,

                       options = providerTileOptions(noWrap = TRUE)

      ) %>%

      addMarkers(data = points())

  })

shinyApp(ui, server

3. Haz clic en el botón “Run App”

verás que aparece la siguiente aplicación:


4. Si hace clic en “New points”, se generará y se mostrará un nuevo conjunto de
puntos aleatorios. Por favor encuentra el código siguiente para entender la creación
de esos puntos (por favor, ten en cuenta que “rnorm” es un generador de números
aleatorios y “cbind” adjunta dos listas verticalmente para formar una estructura de
tabla):

points = cbind(rnorm(40) * 2 + 13, rnorm(40) + 48)

5. Ahora queremos cambiar el código para mostrar la lista de puntos de la interfaz de


usuario. En primer lugar, tenemos que añadir este componente en la propia interfaz
de usuario, lo que significa que tenemos que añadir un elemento al objeto “ui”. Por
favor, hágalo añadiendo las siguientes dos líneas a la “ui”:

p(),

textOutput("coordinates")such that the complete code section looks like this:ui <-
fluidPage(

  leafletOutput("mymap"),

  p(),

  actionButton("recalc", "New points"),

  p(),

  textOutput("coordinates")

6. Entonces, es hora de cambiar también el comportamiento de esta aplicación


cambiando el objeto “server”. Por lo tanto, por favor agregue las siguientes tres
líneas al llamado “eventhandler” responsable de ejecutar el código si se hace clic en
el botón:    output$coordinates <- renderText({ 
             points

          })          such that the complete code section looks like this:          points <-
eventReactive(input$recalc, {

            points = cbind(rnorm(40) * 2 + 13, rnorm(40) + 48)

            output$coordinates <- renderText({ 

              points

            })

           return(points)

         }, ignoreNULL = FALSE

7. Si ahora vuelves a ejecutar esta aplicación, notarás una lista de pares de


coordenadas que se actualiza cada vez que haces clic en el botón “New points”

Con esto concluye este laboratorio, ¡esperamos que te hayas divertido! Si quieres
saber más sobre Shiny y Leaflet, por favor visita los siguientes enlaces: 

https://shiny.rstudio.com/

https://rstudio.github.io/leaflet/

También podría gustarte