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 12:11]
admin [Definición del problema]
clase:iabd:pia:1eval:tema01 [2025/03/10 10:04] (actual)
admin [Ejercicios]
Línea 9: Línea 9:
  
 Para ello vamos a usar las siguientes variables de entrada: Para ello vamos a usar las siguientes variables de entrada:
-  * El largo de su sépalo: Medido en cm 
   * El largo de su pétalo: Medido en cm   * El largo de su pétalo: Medido en cm
 +  * El ancho de su pétalo: Medido en cm
 +
  
  
Línea 25: Línea 26:
  
  
-En la siguiente figura se muestra los valores del largo de sépalo y pétalo según el tipo de flor:+En la siguiente figura se muestra los valores del largo y ancho del pétalo según el tipo de flor:
  
 {{:clase:iabd:pia:1eval:all_iris.png|}} {{:clase:iabd:pia:1eval:all_iris.png|}}
Línea 35: 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 45: 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 51: Línea 52:
 </sxh> </sxh>
  
-Y se puede mostrar en la siguiente figuera+Y se puede mostrar en la siguiente figura
  
  
Línea 57: Línea 58:
  
  
-las IAs realmente son algoritmos solo que el algoritmo se crea automáticamente a partir de los datos. +las IAs realmente son algoritmossolo que el algoritmo se crea casi automáticamente a partir de los datos. 
  
 Una figura con el mismo problema pero creado por una IA sería el siguiente: Una figura con el mismo problema pero creado por una IA sería el siguiente:
Línea 105: 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 350: 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 362: 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 376: 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 397: 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 413: 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 426: 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 437: 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 454: 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 474: 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 504: 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 599: 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 618: 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 635: 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 642: 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.1741518691.txt.gz · Última modificación: 2025/03/09 12:11 por admin