Herramientas de usuario

Herramientas del sitio


clase:iabd:pia:1eval:tema04

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
clase:iabd:pia:1eval:tema04 [2023/04/17 21:24]
admin [Figura]
clase:iabd:pia:1eval:tema04 [2024/04/07 10:46] (actual)
admin [Figura]
Línea 259: Línea 259:
  
  
-===== Proyecciones =====+==== Proyecciones ====
 Indicar como es la proyección de los ejes.  Indicar como es la proyección de los ejes. 
  
Línea 285: Línea 285:
 {{:clase:iabd:pia:1eval:figure_proyecciones.png|}} {{:clase:iabd:pia:1eval:figure_proyecciones.png|}}
  
 +
 +==== Clase Figura ====
 +La siguiente clase permite simplificar la creación de ''Axes'' cuando queremos mostrar muchos en forma de matriz con varias columnas y muchas filas.
 +<sxh python>
 +class Figura:
 +  def __init__(self,ncols,naxes,axes_width_inches=6, axes_height_inches=None):
 +    self.ncols=ncols
 +    self.num_axes=naxes
 +    self.nrows=math.ceil(naxes/ncols)
 +    if axes_height_inches==None:
 +      axes_height_inches=axes_width_inches*0.86
 + 
 +    self.figure, self.arr_axes = plt.subplots(ncols=self.ncols, nrows=self.nrows, figsize=(self.ncols*axes_width_inches,self.nrows*axes_height_inches),
 +                        layout="constrained")
 + 
 +    if isinstance(self.arr_axes, (list, tuple, np.ndarray))==False:
 +      self.arr_axes=np.array([[self.arr_axes]])
 +
 +  def get_axes(self):
 +        return np.array(self.arr_axes).reshape(-1)
 +</sxh>
 +
 +
 +El uso de la clase es la siguiente. 
 +
 +Imagina que quieres mostrar 12 ''Axes'' en 3 columnas y luego obtener cada uno de los axes. 
 +
 +<sxh python>
 +figura=Figura(ncols=3,naxes=12)
 +
 +for axes in figura.get_axes():
 +  axes.plot()
 +</sxh>
 +
 +
 +La ventaja de esta clase es que no te tienes que preocupar del número de filas que va a haber. Que en este caso serán 4
 ===== Dibujando en 2D ===== ===== Dibujando en 2D =====
 Ahora veamos una serie de métodos para dibujar en un ''Axes'' o gráfica en 2 dimensiones Ahora veamos una serie de métodos para dibujar en un ''Axes'' o gráfica en 2 dimensiones
Línea 822: Línea 858:
 <sxh python> <sxh python>
 axes.grid(visible=True, which='major', axis='both',color="#A0A0A0",linewidth=1) axes.grid(visible=True, which='major', axis='both',color="#A0A0A0",linewidth=1)
 +axes.set_axisbelow(True)
 </sxh> </sxh>
  
-{{:clase:iabd:pia:1eval:ejemplo_grid.png|}}+{{:clase:iabd:pia:1eval:ejemplo_grid.png?400|}} 
 + 
 +<note tip> 
 +Incluir ''axes.set_axisbelow(True)'' para que el grid esté por debajo en el z-orden. 
 +</note>
  
 <note tip> <note tip>
Línea 888: Línea 929:
  
 {{:clase:iabd:pia:1eval:ejemplo_spines.png|}} {{:clase:iabd:pia:1eval:ejemplo_spines.png|}}
 +
  
 ==== Superficies ==== ==== Superficies ====
Línea 1481: Línea 1523:
 {{ :clase:iabd:pia:1eval:tema_4_ejercicio_23_c.png?direct |}} {{ :clase:iabd:pia:1eval:tema_4_ejercicio_23_c.png?direct |}}
  
 +
 +==== Ejercicio 23.D ====
 +Repite el ejercicio anterior pero ahora divide los datos en entrenamiento y validación.
 +
 +Para ello usa la función ''train_test_split'' de sklearn
 +
 +<sxh python>
 +from sklearn.model_selection import train_test_split
 + 
 +x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2, random_state=42)
 +</sxh>
 +
 +El parámetro ''test_size'' indica el % de datos (en tpu) que serán para el test.
 +
 +Ahora deberás indicar en el método ''fit'' que ahora hay datos de entrenamiento y de test
 +
 +<sxh python>
 +history=model.fit(x_train,y_train,validation_data=(x_test,y_test),epochs=epochs,verbose=False)
 +</sxh>
 +
 +Para acabar ahora están las métricas de:
 +  * ''loss'' : La pérdida en entrenamiento
 +  * ''val_loss'' : La pérdida en validación
 +
 +Al mostrar la gráfica, muestra tanto ''loss'' como ''val_loss'' del mismo color pero que la línea de ''val_loss'' sea continua y la línea de ''val_loss'' sea puenteada
 +
 +{{:clase:iabd:pia:1eval:tema_4_ejercicio_23_d.png?direct|}}
  
  
clase/iabd/pia/1eval/tema04.1681759455.txt.gz · Última modificación: 2023/04/17 21:24 por admin