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
Próxima revisión Ambos lados, revisión siguiente
clase:iabd:pia:1eval:tema04 [2023/04/17 21:24]
admin [Proyecciones]
clase:iabd:pia:1eval:tema04 [2023/12/13 13:22]
admin [Ejercicios]
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=6, height_axes=None):
 +    self.ncols=ncols
 +    self.num_axes=naxes
 +    self.nrows=math.ceil(naxes/ncols)
 +    if height_axes==None:
 +      height_axes=axes_width*0.86
 +
 +    self.figure, self.arr_axes = plt.subplots(ncols=self.ncols, nrows=self.nrows, figsize=(axes_width*self.ncols,height_axes*self.nrows),
 +                        layout="constrained")
 +
 +    if isinstance(self.arr_axes, (list, tuple, np.ndarray))==False:
 +      self.arr_axes=np.array([[self.arr_axes]])
 +
 +    for axes in np.array(self.arr_axes).reshape(-1):
 +      self._visible_axes(axes,False)
 +
 +  def get_figure(self):
 +    return self.figure
 +
 +  def get_axes(self,index):
 +    col=index % self.ncols
 +    row=math.ceil((index+1)/self.ncols)-1
 +    axes=self.arr_axes[row,col]
 +    self._visible_axes(axes,True)
 +    return axes
 +
 +  def _visible_axes(self,axes,visible):
 +    axes.get_xaxis().set_visible(visible)
 +    axes.get_yaxis().set_visible(visible)
 +    axes.spines['right'].set_visible(visible)
 +    axes.spines['top'].set_visible(visible)
 +    axes.spines['left'].set_visible(visible)
 +    axes.spines['bottom'].set_visible(visible)
 +</sxh>
 +
 +
 +El uso de la clase es la siguiente. 
 +
 +Imagina que quieres mostrar 10 ''Axes'' en 3 columnas y luego obtiene cada uno de los axes. 
 +
 +<sxh python>
 +figura=Figura(ncols=3,naxes=10)
 +
 +for index in range(0,10):
 +  axes=figura.get_axes(index)
 +</sxh>
 +
 +
 +La ventaja de esta clase es que no te tienes que preocupar del número de filas que va a haber.
 ===== 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 876:
 <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 947:
  
 {{:clase:iabd:pia:1eval:ejemplo_spines.png|}} {{:clase:iabd:pia:1eval:ejemplo_spines.png|}}
 +
  
 ==== Superficies ==== ==== Superficies ====
Línea 1481: Línea 1541:
 {{ :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.txt · Última modificación: 2024/05/11 14:01 por admin