{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", " \n", "
\n", "\n", "# Aprendizaje Profundo" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#
Diplomado en Ciencia de Datos
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "##
Inspección, Instalación y Carga de Módulos y Paquetes
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "
\n", " \n", "
\n", "
\n", "\n", "
Fuente: Dubai, Marina bay - sp.depositphotos.com
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Profesores" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* Alvaro Montenegro, PhD, \n", "* Campo Elías Pardo, PhD, \n", "* Daniel Montenegro, Msc, \n", "* Camilo José Torres Jiménez, Msc, " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Asesora Medios y Marketing digital" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* Maria del Pilar Montenegro, pmontenegro88@gmail.com\n", "* Jessica López Mejía, jelopezme@unal.edu.co" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Jefe Jurídica" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* Paula Andrea Guzmán, guzmancruz.paula@gmail.com" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Coordinador Jurídico" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* David Fuentes, fuentesd065@gmail.com" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Desarrolladores Principales" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* Dairo Moreno, damoralesj@unal.edu.co\n", "* Joan Castro, jocastroc@unal.edu.co\n", "* Bryan Riveros, briveros@unal.edu.co\n", "* Rosmer Vargas, rovargasc@unal.edu.co\n", "* Venus Puertas, vpuertasg@unal.edu.co" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Expertos en Bases de Datos" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* Giovvani Barrera, udgiovanni@gmail.com\n", "* Camilo Chitivo, cchitivo@unal.edu.co" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Introducción" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Existe una manera de saber qué paquetes se encuentran instalados en el entorno/ambiente actual, sin salir del cuaderno.\n", "\n", "Basta con colocar `!comando_deseado` en una celda de código." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Ejemplo:**\n", "\n", "Verifiquemos la versión de Python que estamos usando, qué entornos/ambientes tenemos disponibles, cuál es el que se encuentra activo y qué paquetes están instalados en dicho entorno, todo esto sin salir del cuaderno." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Versión de python que se está utilizando\n", "!python --version" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Entornos disponibles\n", "!conda env list" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Paquetes instalados en el entorno activo\n", "!conda list" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**¿Qué es un módulo?**\n", "\n", "Un módulo es un archivo que tiene extensión *.py*, es decir, es un archivo de texto que tiene adentro código de python que se puede ejecutar. Un módulo puede definir funciones, clases y variables.\n", "\n", "Cabe resaltar lo siguiente: **Python es un lenguaje de programación orientado a objetos**.\n", "\n", "Para términos de visualización, imagínese una caja que tiene muchas cajas por dentro y dentro de cada caja existen herramientas de trabajo distintas.\n", "\n", "**Ejemplo:**\n", "\n", "Mi maleta. Mi maleta tiene dentro lo siguiente:\n", "\n", "- Una cartuchera.\n", "- Un computador.\n", "- Un cuaderno.\n", "\n", "Los roles serían los siguientes:\n", "\n", "- Maleta $\\rightarrow$ Paquete\n", "- Cartuchera $\\rightarrow$ Módulo\n", "- Cuaderno $\\rightarrow$ Módulo\n", "\n", "Entonces, si queremos usar la cartuchera, debemos primero abrir la maleta y tomarla.\n", "\n", "**O sea, del paquete, vamos a usar un módulo**.\n", "\n", "Dentro de la cartuchera tengo marcadores, lápices, y borrador.\n", "\n", "Estos toman el rol de **atributos**, objetos que hacen tareas específicas.\n", "\n", "Por tanto, si quiero usar un borrador, debería hacer lo siguiente\n", "\n", "Abrir maleta $\\rightarrow$ Tomar cartuchera $\\rightarrow$ Abrir Cartuchera $\\rightarrow$ Tomar Borrador\n", "\n", "En Python, estas acciones se pueden **traducir** a lo siguiente:\n", "\n", "```import Maleta```\n", "\n", "```Maleta.Cartuchera.Borrador()```\n", "\n", "Para saber qué módulos están disponibles en el ambiente de trabajo, basta con usar el siguiente comando:" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "help(\"modules\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Parece que es una lista bastante larga...\n", "\n", "Veamos alguna documentación de alguno de los módulos y sus atributos.\n", "\n", "Por ejemplo random." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "#help(\"random\") # Muestra toda la documentación\n", "\n", "import random\n", "\n", "#?random # Muestra una pequeña documentación" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Para acceder a los atributos del mósulo, basta colocar ```dir(modulo)```" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "dir(random)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Vaya que la lista sigue siendo larga...\n", "\n", "Sigamos metiendo dentro de cada cosa (algún día llegaremos al fin...no?)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "?random.random" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Bingo!** Al fin algo que podemos usar:" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "x = random.random()\n", "print(\"Número aleatorio en [0,1]: \",x)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "?random.randint" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "y=random.randint(3,6)\n", "print(\"Número entero aleatorio entre 3 y 6: \",y)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Alias para módulos\n", "\n", "Otra propiedad genial de Python es su capacidad para reducir la cantidad de código escrito usando unos secretos milenarios: aliases.\n", "\n", "Por ejemplo, si me llamo Daniel, mi **alias** puede ser Dani.\n", "\n", "Entonces, acada vez que me digan Dani, yo miraré en respuesta.\n", "\n", "Traducir a Python luce así:\n", "\n", "```import modulo as alias```\n", "\n", "**Ejemplo:**" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "import math as m\n", "\n", "# Una vez nombrado el alias, siempre se debe referir a ese alias y no al nombre principal\n", "\n", "#dir(math) genera error\n", "dir(m)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Aplicación:\n", "\n", "Una pequeña aplicación de Matemáticas:\n", "\n", "**Área de una circunferencia de radio r:**\n", "\n", "$A = \\pi r²$" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Aplicación: Área de un círculo de radio 10 cm \n", "\n", "r = 10; # Declarar el radio\n", "z = m.pi*(r**2) # Escribir la fórmula matemática\n", "print(\"El Área del círculo es: \",z,\"cm²\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Como pueden observar, los módulos son el **alma de Python**.\n", "\n", "## Tareas:\n", "\n", "- Conocer los 10 módulos de Python más usados.\n", "- Hacer un ejercicio práctico con cada módulo investigado.\n", "- Investigar si es posible crear un módulo de Python. En caso afirmativo, crear uno simple.\n", "- Explicar la lógica subyacente de la siguiente línea:" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# You Must Reset Kernel 0,0\n", "\n", "from math import pi\n", "\n", "A = pi*r**2\n", "\n", "print(A)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "math.pi" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Bonus: Fractales \n", "\n", "Usando un módulo llamado ```turtle``` podemos crear un árbolito bonito." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "import turtle\n", "\n", "def tree(length,n):\n", " if length < (length/n):\n", " return\n", " turtle.forward(length)\n", " turtle.left(45)\n", " tree(length * 0.5,length/n)\n", " turtle.left(20)\n", " tree(length * 0.5,length/n)\n", " turtle.right(75)\n", " tree(length * 0.5,length/n)\n", " turtle.right(20)\n", " tree(length * 0.5,length/n)\n", " turtle.left(30)\n", " turtle.backward(length)\n", " return\n", "\n", "turtle.left(90)\n", "turtle.backward(30)\n", "tree(200,4)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Y también formas que tienen forma de pedazos de copitos de nieve (Koch Curve):" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "from turtle import *\n", "\n", "def Recursive_Koch(length, depth):\n", " if depth == 0:\n", " forward(length)\n", " else:\n", " Recursive_Koch(length, depth-1)\n", " right(60)\n", " Recursive_Koch(length, depth-1)\n", " left(120)\n", " #Recursive_Koch(length, depth-1)\n", " Recursive_Koch(length, depth-1)\n", " right(60)\n", " Recursive_Koch(length, depth-1)\n", " \n", "# ----------\n", "Recursive_Koch(3, 6)" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.11.3" } }, "nbformat": 4, "nbformat_minor": 4 }