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 [2022/12/21 16:50]
admin [Dibujando en 3D]
clase:iabd:pia:1eval:tema04 [2024/04/07 10:46] (actual)
admin [Figura]
Línea 195: Línea 195:
 ===== Figura ===== ===== Figura =====
 Acabamos de ver como colocar cada gráfica dentro de la figura. Ahora veremos unas cosas mas sobre ella. Acabamos de ver como colocar cada gráfica dentro de la figura. Ahora veremos unas cosas mas sobre ella.
 +
  
 *  Para hacer la figura mas grande solo hay que indicar el tamaño con el argumento ''figsize'' *  Para hacer la figura mas grande solo hay que indicar el tamaño con el argumento ''figsize''
Línea 223: Línea 224:
  
  
 +==== Subfiguras ====
 +Además de ''figure'' y ''axes'', a partir de matplolib 3.4 existe las ''subfigure''. Éstas se pueden usar para poder poner un título común a varios ''axes''.
  
 +Para ello se usa el método ''subfigures'' , indicando el número de filas y columnas. Este método retornará un array con todas las subfiguras. Cada subfigura será como una nueva figura.
  
-===== Proyecciones =====+<sxh python> 
 +subfigure_a,subfigure_b figure.subfigures(nrows=2, ncols=1) 
 +</sxh> 
 + 
 +Veamos un ejemplo: 
 + 
 +<sxh python> 
 +import matplotlib.pyplot as plt 
 + 
 +figure=plt.figure(figsize=(8, 6),layout='constrained'
 +figure.suptitle("Título de la figura"
 + 
 +subfigure_a,subfigure_b = figure.subfigures(nrows=2, ncols=1) 
 + 
 +subfigure_a.suptitle("Titulo de la SubFigura A") 
 +axes_1 = subfigure_a.add_subplot(1,2,1) 
 +axes_1.set_title("axes_1"
 +axes_2 = subfigure_a.add_subplot(1,2,2) 
 +axes_2.set_title("axes_2"
 + 
 +subfigure_b.suptitle("Titulo de la SubFigura B") 
 +axes_3 = subfigure_b.add_subplot(1,2,1) 
 +axes_3.set_title("axes_3"
 +axes_4 = subfigure_b.add_subplot(1,2,2) 
 +axes_4.set_title("axes_4"
 +</sxh> 
 + 
 +{{:clase:iabd:pia:1eval:subfiguras.png?400|}} 
 + 
 + 
 +==== Proyecciones ====
 Indicar como es la proyección de los ejes.  Indicar como es la proyección de los ejes. 
  
Línea 251: 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 788: 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 854: Línea 929:
  
 {{:clase:iabd:pia:1eval:ejemplo_spines.png|}} {{:clase:iabd:pia:1eval:ejemplo_spines.png|}}
 +
  
 ==== Superficies ==== ==== Superficies ====
Línea 1358: Línea 1434:
  
 <sxh python> <sxh python>
 +import numpy as np
 +import pandas as pd
 import seaborn as sns import seaborn as sns
 +from sklearn.datasets import load_iris
 +
 +iris=load_iris()
 +
 +#Obtener los datos
 +data=iris.data
 +target=iris.target
 +
 +feature_names=['longitud sepalo ','ancho sepalo','longitud petalo','ancho petalo'] #iris.feature_names
 +target_names=['setosa', 'versicolor', 'virginica'] #iris.target_names
 +target_unique=[0,1,2] #np.unique(target)
 +
 +#Crear el DataFrame con los datos
 +df=pd.DataFrame(data, columns=feature_names)
 +df['flores']=target
 +df['flores'] = df['flores'].replace(target_unique,target_names)
  
-iris =sns.load_dataset("iris") 
  
-sns.pairplot(iris,hue="species")+#Crear el gráfico 
 +sns.pairplot(df,hue="flores")
 </sxh> </sxh>
  
Línea 1429: 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.1671637858.txt.gz · Última modificación: 2022/12/21 16:50 por admin