Herramientas de usuario

Herramientas del sitio


clase:iabd:pia:1eval:tema02

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anterior Revisión previa
Próxima revisión
Revisión previa
Última revisión Ambos lados, revisión siguiente
clase:iabd:pia:1eval:tema02 [2023/11/04 12:10]
admin
clase:iabd:pia:1eval:tema02 [2024/01/06 11:59]
admin [Medición de rendimiento]
Línea 407: Línea 407:
 from tabulate import tabulate from tabulate import tabulate
  
-a=[  [5,0.7,0.765], [10,1.45,0.84], [20,2.678,0.978], [60,11.396,0.9973]  ]+datos=[  [5,0.7,0.765], [10,1.45,0.84], [20,2.678,0.978], [60,11.396,0.9973]  ]
  
  
-print(tabulate(a, headers=["Épocas", "Tiempo (s)", "Resultado"]))+print(tabulate(datos, headers=["Épocas", "Tiempo (s)", "Resultado"]))
 </sxh> </sxh>
  
Línea 422: Línea 422:
 </sxh> </sxh>
  
 +También podemos añadir una primera columna que sean también como "cabeceras". El siguiente anterior ejemplo se podría modificar de forma que en el array ''a'' solo estén los datos de tiempo y resultado y no las épocas ya que son como "cabeceras".
  
 +<sxh python>
 +from tabulate import tabulate
 +
 +datos=[  [0.7,0.765], [1.45,0.84], [2.678,0.978], [11.396,0.9973]  ]
 +epocas=[5,10,20,60]
 +
 +print(tabulate(datos, headers=["Épocas", "Tiempo (s)", "Resultado"],showindex=epocas))
 +
 +</sxh>
 +<sxh base>
 +  Épocas    Tiempo (s)    Resultado
 +--------  ------------  -----------
 +               0.7         0.765
 +      10         1.45        0.84
 +      20         2.678       0.978
 +      60        11.396       0.9973
 +</sxh>
  
 ===== Estructuras de control ===== ===== Estructuras de control =====
Línea 591: Línea 609:
 </sxh> </sxh>
  
 +
 +===== Clases =====
 +Para crear clases en python:
 +  * ''class'': Se crear la clase
 +  * ''self'': Para referirse a propiedades y métodos del propio objeto, se pasa siempre como primer argumento en todos los métodos.
 +  * ''%%__%%init%%__%%'': El nombre del constructor
 + 
 +
 +  * Vamos a crear la clase rectángulo
 +<sxh python>
 +class Rectangulo:
 +    def __init__(self, longitud, ancho):
 +        self.longitud = longitud
 +        self.ancho = ancho
 +
 +    def calcular_area(self):
 +        return self.longitud * self.ancho
 +
 +    def calcular_perimetro(self):
 +        return 2 * (self.longitud + self.ancho)
 +</sxh>
 +
 +
 +  * Ahora vamos a usar la clase que hemos creado
 +<sxh python>
 +mi_rectangulo = Rectangulo(5, 10)
 +
 +print("Longitud:", mi_rectangulo.longitud)
 +print("Ancho:", mi_rectangulo.ancho)
 +print("Área:", mi_rectangulo.calcular_area())
 +print("Perímetro:", mi_rectangulo.calcular_perimetro()) 
 +</sxh>
 +
 +<sxh base>
 +Longitud: 5
 +Ancho: 10
 +Área: 50
 +Perímetro: 30
 +</sxh>
 ===== Medición de rendimiento ===== ===== Medición de rendimiento =====
  
Línea 636: Línea 693:
 Mas información: Mas información:
   * [[https://morton-kuo.medium.com/ml09-e549b2c26c47|ML09: Measuring Running Time in Python & R]]   * [[https://morton-kuo.medium.com/ml09-e549b2c26c47|ML09: Measuring Running Time in Python & R]]
 +
 +===== Poetry =====
 +Para usar Mish deberemos instalar [[https://www.tensorflow.org/addons/overview|TensorFlow Addons]]. 
 +Desde conda a veces falla la instalación así que lo recomendable es usar [[https://python-poetry.org/|Poetry]]
 +
 +Para usar poetry debemos primero instalarlo en el sistema operativo mediante los comandos:
 +<sxh bash>
 +pip install --user poetry
 +poetry config virtualenvs.in-project true 
 +</sxh>
 +
 +Una vez instalado (se puede comprobar con ''poetry --version'') iremos a la carpeta donde tenemos nuestro programa en Python (o donde lo vamos a tener) y ejecutaremos lo siguiente:
 +
 +<sxh bash>
 +poetry init
 +poetry add libclang = "<12.0.0" numpy pandas matplotlib seaborn scikit-learn tensorflow tabulate PyMySQL SQLAlchemy ipympl keras-tuner tensorflow-addons statsmodels
 +poetry install
 +</sxh>
 +
 +<note important>
 +Si al hacer el ''poetry add'' se produce el error:
 +''[org.freedesktop.DBus.Error.UnknownObject] ("No such object path '/org/freedesktop/secrets/aliases/default'",)'' 
 +deberemos crear la siguiente variable de entorno:
 +''export PYTHON_KEYRING_BACKEND=keyring.backends.null.Keyring''
 +</note>
 +
 +Para ejecutar el código hay 2 formas:
 +
 +  * Desde la línea de comandos:
 +<sxh python>
 +poetry run python my_script.py
 +</sxh>
 +
 +  * Desde VS Code seleccionar en los entornos de ejecución la carpeta ''.venv'' del propio proyecto:
 +{{ :clase:iabd:pia:1eval:vs-code-poetry.png?direct |}}
 +
 +  * Si queremos usar el entorno de poetry pero no está en nuestra carpeta se puede indicar a VS Code cual es el ejecutable de python que debe usar siempre para ello hay que crear en la carpeta de nuestro proyecto el fichero ''$HOME/.config/Code/User/settings.json''
 +
 +<sxh base>
 +{    
 +    "python.defaultInterpreterPath": "/home/logongas/python_default_env/.venv/bin/python",
 +}
 +</sxh>
 +
 +
  
 ===== Ejercicios ===== ===== Ejercicios =====
Línea 917: Línea 1019:
 |  64, 128, 64, 8, 1  |  20 | |  64, 128, 64, 8, 1  |  20 |
 |  64, 128, 64, 8, 1  |  40 | |  64, 128, 64, 8, 1  |  40 |
 +
 +==== Ejercicio 20 ====
 +Crea una clase llamada ''CuentaBancaria''.
 +
 +La clase debe tener  los siguientes atributos:
 +
 +  * ''titular'': el titular de la cuenta.
 +  * ''saldo'': el saldo actual de la cuenta.
 +  * 
 +La clase debe tener los siguientes métodos:
 +  * ''%%__%%init%%__%%'': el método de inicialización que toma el titular como parámetro e inicializa el saldo en 0.
 +  * ''depositar'': un método que toma una cantidad como parámetro y la suma al saldo actual.
 +  * ''retirar'': un método que toma una cantidad como parámetro y la resta del saldo actual, pero verifica que haya suficiente saldo antes de realizar la operación.
 +  * ''obtener_saldo'': un método que devuelve el saldo actual de la cuenta.
 +
 +Usa la clase de forma que
 +  * Se cree un objeto
 +  * Se depositen 100€
 +  * Se retiren 75€.
 +  * Imprimas el titular y el saldo.
  
  
clase/iabd/pia/1eval/tema02.txt · Última modificación: 2024/01/06 12:03 por admin