Coursera 2
Coursera 2
Coursera 2
¡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!
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!
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.
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
11. Desplázate a la parte superior de la página y haz clic en “Try the API”
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.
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.
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.
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.
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.
5. Sube una imagen (o toma una foto con la cámara web) e inspecciona los
resultados visualizados.
● 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.
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.
● 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.
Esto incluye la parte 2 de este laboratorio, que introduce a Data Asset Exchange.
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
1. Describir GitHub
2. Crear una cuenta GitHub
3. Agregar un Proyecto / Repo
4. Editar / Crear un archivo
5. Subir un archivo y presentar
Por favor, siga los pasos que se indican a continuación para crear una cuenta GitHub:
Paso 2: Indicar los detalles necesarios para crear una cuenta, como se muestra a
continuación:
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 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.
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 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
Autor(es)
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
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
a
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!
2. Para crear un nuevo notebook, haga clic en cualquiera de los idiomas en "Notebook".
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
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.
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.
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.
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.
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/
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
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.
unique(iris$Species)
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)
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.
ui <- fluidPage(
leafletOutput("mymap"),
p(),
return(points)
observeEvent(input$Map_shape_click, { # update the location selectInput on map
clicks
})
})
leaflet() %>%
addProviderTiles(providers$Stamen.TonerLite,
) %>%
addMarkers(data = points())
})
shinyApp(ui, server
p(),
textOutput("coordinates")such that the complete code section looks like this:ui <-
fluidPage(
leafletOutput("mymap"),
p(),
p(),
textOutput("coordinates")
}) such that the complete code section looks like this: points <-
eventReactive(input$recalc, {
points
})
return(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/