Herramientas de usuario

Herramientas del sitio


clase:iabd:pia:1eval:tema01

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:tema01 [2025/03/09 17:37]
admin [Definición del problema]
clase:iabd:pia:1eval:tema01 [2025/03/10 10:04] (actual)
admin [Ejercicios]
Línea 36: Línea 36:
   Si longitud_petalo < 2.5 → Setosa   Si longitud_petalo < 2.5 → Setosa
   Si longitud_petalo ≥ 2.5:   Si longitud_petalo ≥ 2.5:
-    Si ancho_petalo < 1.→ Versicolor +    Si ancho_petalo < 1.→ Versicolor 
-    Si ancho_petalo ≥ 1.→ Virginica+    Si ancho_petalo ≥ 1.→ Virginica
  
 Este "algoritmo o IA" lo podemos representar en python así: Este "algoritmo o IA" lo podemos representar en python así:
Línea 46: Línea 46:
         return 0         return 0
     else:     else:
-        if ancho_petalo>=1.8:+        if ancho_petalo>=1.7:
             return 2             return 2
         else:         else:
Línea 52: Línea 52:
 </sxh> </sxh>
  
-Y se puede mostrar en la siguiente figuera+Y se puede mostrar en la siguiente figura
  
  
Línea 106: Línea 106:
 La red neuronal lo único que va a hacer es "aprender" a crear una función matemática que dado el largo del pétalo y el ancho del pétalo calcule el tipo de flor: La red neuronal lo único que va a hacer es "aprender" a crear una función matemática que dado el largo del pétalo y el ancho del pétalo calcule el tipo de flor:
  
-$$ tipo \: flor=f(largo \: pétalo,ancho \: pétalo) $$+$$ tipo \: flor=f(largo \: petalo,ancho \: petalo) $$
  
 <note tip>Debido a que las redes neuronales solo trabajan con números usaremos los siguientes números para los tipos de flor: <note tip>Debido a que las redes neuronales solo trabajan con números usaremos los siguientes números para los tipos de flor:
Línea 351: Línea 351:
  
 <sxh python> <sxh python>
 +from matplotlib.colors import ListedColormap
 figure=plt.figure(figsize = (5, 4)) figure=plt.figure(figsize = (5, 4))
 axes = figure.add_subplot() axes = figure.add_subplot()
  
-colors = ["blue", "red", "green"+colors = ["#0E5581", "#8F0C00", "#0C8F00"
 cmap = ListedColormap(colors[:len(np.unique(y))])  cmap = ListedColormap(colors[:len(np.unique(y))]) 
  
Línea 363: Línea 364:
  
 for i, name in enumerate(["Setosa","Versicolor"]): for i, name in enumerate(["Setosa","Versicolor"]):
-    color = scatter.cmap(scatter.norm(i))  # Obtener el color de la clase i +    color = scatter.cmap(scatter.norm(i))   
-    axes.scatter([], [], color=[color], label=name+":"+str(i))  # Usar 'color' en lugar de 'c' +    axes.scatter([], [], color=[color], label=name+":"+str(i))  
 axes.set_xlim(xmin=0,xmax=8) axes.set_xlim(xmin=0,xmax=8)
 axes.set_ylim(ymin=0,ymax=3) axes.set_ylim(ymin=0,ymax=3)
Línea 377: Línea 377:
  
 <sxh python> <sxh python>
 +from matplotlib.colors import ListedColormap
 figure=plt.figure(figsize = (5, 4)) figure=plt.figure(figsize = (5, 4))
 axes = figure.add_subplot() axes = figure.add_subplot()
  
-colors = ["blue", "red", "green"+colors = ["#0E5581", "#8F0C00", "#0C8F00"
 cmap = ListedColormap(colors[:len(np.unique(y))])  cmap = ListedColormap(colors[:len(np.unique(y))]) 
 +
 +
 +colors = ["#83B5F1", "#FF8175", "#75FF81"
 +cmap_fondo = ListedColormap(colors[:len(np.unique(y))]) 
  
  
Línea 398: Línea 403:
  
  
-scatter=axes.scatter(x=xa, y=ya, c=za, cmap=cmap,s=6)+scatter=axes.scatter(x=xa, y=ya, c=za, cmap=cmap_fondo,s=6)
 axes.set_xlabel('Largo Pétalo')   axes.set_xlabel('Largo Pétalo')  
 axes.set_ylabel('Ancho Pétalo') axes.set_ylabel('Ancho Pétalo')
  
 for i, name in enumerate(["Setosa","Versicolor"]): for i, name in enumerate(["Setosa","Versicolor"]):
-    color = scatter.cmap(scatter.norm(i))  # Obtener el color de la clase i +    color = scatter.cmap(scatter.norm(i))  
-    axes.scatter([], [], color=[color], label=name+":"+str(i))  # Usar 'color' en lugar de 'c' +    axes.scatter([], [], color=[color], label=name+":"+str(i))  
 +scatter=axes.scatter(x=x[:,0], y=x[:,1], c=y, cmap=cmap,s=6)
 axes.set_xlim(xmin=0,xmax=8) axes.set_xlim(xmin=0,xmax=8)
 axes.set_ylim(ymin=0,ymax=3) axes.set_ylim(ymin=0,ymax=3)
Línea 414: Línea 419:
 {{:clase:iabd:pia:1eval:resultado_red_neuronal_iris.png|}} {{:clase:iabd:pia:1eval:resultado_red_neuronal_iris.png|}}
  
-Lo que hay que hacer es comparar los datos de las 2 gráficas para si son coherentes entre ellas. Y obviamente lo son+Lo que hay que hacer es comparar los datos de las 2 gráficas para ver si son coherentes entre ellas. Y obviamente lo son
  
-==== Las dificultades de la IA ====+===== Las dificultades de la IA =====
 Al entrenar una IA lo dificil es cuando se encuentra con cosas que no habías previsto. Al entrenar una IA lo dificil es cuando se encuentra con cosas que no habías previsto.
  
 {{:clase:iabd:pia:1eval:muffin_chiguagua.jpeg|}} {{:clase:iabd:pia:1eval:muffin_chiguagua.jpeg|}}
  
 +Si creamos una IA, para saber si una foto es de un chihuahua pero le pasamos una foto de un muffin, lo más normal es que lo confunda con un chihuahua.🤷🏻
  
  
Línea 427: Línea 432:
 ===== Ejercicios ===== ===== Ejercicios =====
  
-==== Ejercicio 1 ====+==== Ejercicio 1.A ====
 Usando Google collab haz una red neuronal en python con Keras que obtenga el tipo de flor en función del "Largo Pétalo" y de "Ancho Pétalo". Usando Google collab haz una red neuronal en python con Keras que obtenga el tipo de flor en función del "Largo Pétalo" y de "Ancho Pétalo".
  
Línea 438: Línea 443:
 |  3.9    1.2      |    |    | |  3.9    1.2      |    |    |
  
-==== Ejercicio 2 ====+==== Ejercicio 1.B ==== 
 +Muestra la siguiente figura para ver como se comporta la red neuronal 
 + 
 +{{:clase:iabd:pia:1eval:ejer_01_01b.png|}} 
 + 
 + 
 +==== Ejercicio 2.A ====
 Modifica ahora la red neuronal de forma que: Modifica ahora la red neuronal de forma que:
  
     * La 1º  capa oculta tenga 4 neuronas en vez de 6     * La 1º  capa oculta tenga 4 neuronas en vez de 6
-    * La 2º capa oculta tenga neuronas en vez de 12 +    * La 2º capa oculta tenga neuronas en vez de 12 
-    * La 3º capa oculta tenga neuronas en vez de 6+    * La 3º capa oculta tenga neuronas en vez de 6
     * La 4º capa seguirá teniendo 1 neurona     * La 4º capa seguirá teniendo 1 neurona
 +    * Sean solo 30 épocas.
 +    * La semilla sea 5.
  
 Usando la web [[http://alexlenail.me/NN-SVG/index.html]] dibuja la red neuronal que acabas de crear Usando la web [[http://alexlenail.me/NN-SVG/index.html]] dibuja la red neuronal que acabas de crear
Línea 455: Línea 468:
 |  1.3    0.3      |    |    | |  1.3    0.3      |    |    |
 |  3.9    1.2      |    |    | |  3.9    1.2      |    |    |
 +
 +==== Ejercicio 2.B ====
 +Muestra la siguiente figura para ver como se comporta la red neuronal
 +
 +{{:clase:iabd:pia:1eval:ejer_01_02b.png|}}
  
  
Línea 475: Línea 493:
 Entrena la red con los nuevos datos Entrena la red con los nuevos datos
  
-Muestra la gráfica con los datos de entrada usando el código+Muestra la siguiente gráfica con los datos de entrada: 
-<sxh python> + 
-from matplotlib.colors import ListedColormap +{{:clase:iabd:pia:1eval:ejer_01_03.png|}}
-figure=plt.figure(figsize = (5, 4)) +
-axes = figure.add_subplot() +
-  +
-colors = ["blue", "red", "green"]  +
-cmap = ListedColormap(colors)  +
-  +
-  +
-scatter=axes.scatter(x=x[:,0], y=x[:,1], c=y, cmap=cmap,s=6) +
-axes.set_xlabel('Largo Pétalo'  +
-axes.set_ylabel('Ancho Pétalo'+
-  +
-for i, name in enumerate(["Setosa","Versicolor","Virginica"]): +
-    color = scatter.cmap(scatter.norm(i))  +
-    axes.scatter([], [], color=[color], label=name+":"+str(i))   +
-  +
-axes.set_xlim(xmin=0,xmax=8) +
-axes.set_ylim(ymin=0,ymax=3) +
-axes.legend(title="Flores"+
-</sxh>+
  
  
Línea 505: Línea 504:
 |  **X**  ||  **Y Predicha**  ||  **Y Real**  | |  **X**  ||  **Y Predicha**  ||  **Y Real**  |
 |  **Largo Pétalo**  |  **Ancho Pétalo**  |  **Score Flor Predicha **(''y_score'' |  **Valor Flor Predicha**(''y_pred'' |  **Valor Flor Real**(''y_true'' |  **Largo Pétalo**  |  **Ancho Pétalo**  |  **Score Flor Predicha **(''y_score'' |  **Valor Flor Predicha**(''y_pred'' |  **Valor Flor Real**(''y_true''
-|  5.1    1.5      |    |    +|  5.1    1.5      |    |  2  
-|  5.8    2.2      |    |    |+|  5.8    2.2      |    |  2  |
  
  
Línea 600: Línea 599:
  
 |  **X**  |  **Y Predicha**  ||  **Y Real**  | |  **X**  |  **Y Predicha**  ||  **Y Real**  |
-|  **Fila Datos**  |  **Score Flor Predicha **(''y_score'' |  **Valor Flor Predicha**(''y_pred'' |  **Valor Flor Real**(''y_true'' +|  **Fila Datos**  |  ''y_score''  |  ''y_pred''  |  ''y_true'' 
 |  56      |    |    | |  56      |    |    |
 |  204      |    |    | |  204      |    |    |
Línea 619: Línea 618:
  
 |  **X**  |  **Y Predicha**  ||  **Y Real**  | |  **X**  |  **Y Predicha**  ||  **Y Real**  |
-|  **Fila Datos**  |  **Score Flor Predicha **(''y_score'' |  **Valor Flor Predicha**(''y_pred'' |  **Valor Flor Real**(''y_true'' +|  **Fila Datos**  |  ''y_score''  |  ''y_pred''  |  ''y_true'' 
 |  56      |    |    | |  56      |    |    |
 |  204      |    |    | |  204      |    |    |
Línea 636: Línea 635:
  
 |  **X**  |  **Y Predicha**  ||  **Y Real**  | |  **X**  |  **Y Predicha**  ||  **Y Real**  |
-|  **Fila Datos**  |  **Score Flor Predicha **(''y_score'' |  **Valor Flor Predicha**(''y_pred'' |  **Valor Flor Real**(''y_true'' +|  **Fila Datos**  |  ''y_score''  |  ''y_pred''  |  ''y_true''  
 |  56      |    |    | |  56      |    |    |
 |  204      |    |    | |  204      |    |    |
Línea 643: Línea 642:
  
 |  **X**  |  **Y Predicha**  ||  **Y Real**  | |  **X**  |  **Y Predicha**  ||  **Y Real**  |
-|  **Fila Datos**  |  **Score Flor Predicha **(''y_score'' |  **Valor Flor Predicha**(''y_pred'' |  **Valor Flor Real**(''y_true'' +|  **Fila Datos**  |  ''y_score''  |  ''y_pred''  |  ''y_true''  
 |  56      |    |    | |  56      |    |    |
 |  204      |    |    | |  204      |    |    |
  
clase/iabd/pia/1eval/tema01.1741538232.txt.gz · Última modificación: 2025/03/09 17:37 por admin