"""
Se trata de una sencilla red neuronal con dos capas ocultas intermedias de 8 neuronas
cada una, y 1 neurona de salida. Los datos son los siguientes:
Se trata de cinco hermanos que a los 30 años median lo siguiente:
Antonio 1,70 cm. Pedrito 1,75. Juanito 1,78 . Carlitos 1,69. Ignacio 1,87.
Ramón 1,79. Hace 6 meses ha nacido Santiaguito. Cuales son las previsiones de estatura
cuando también tenga 30 años. Haremos graficas de salida de columnas.
"""
import numpy as np
import matplotlib.pyplot as plt
from keras.models import Sequential
from keras.layers import Dense
# Datos de entrada (edad en años)
edades = np.array([30, 30, 30, 30, 30, 30])
# Datos de salida (estatura en cm)
estaturas = np.array([170, 175, 178, 169, 187, 179])
# Crear el modelo de la red neuronal
modelo = Sequential()
modelo.add(Dense(8, input_dim=1, activation='relu'))
modelo.add(Dense(8, activation='relu'))
modelo.add(Dense(1, activation='linear'))
# Compilar el modelo
modelo.compile(loss='mean_squared_error', optimizer='adam')
# Entrenar el modelo con los datos de entrada y salida
historial = modelo.fit(edades, estaturas, epochs=1000, verbose=0)
# Predecir la estatura de Santiago a los 30 años (Santiaguito)
santiaguito_edad = np.array([30])
santiaguito_estatura = modelo.predict(santiaguito_edad)
print("La previsión de estatura de Santiaguito a los 30 años es:", santiaguito_estatura[0][0], "cm")
# Datos para la gráfica de columnas
nombres = ['Antonio', 'Pedrito', 'Juanito', 'Carlitos', 'Ignacio', 'Ramón', ' Santiago con 30 años']
estaturas_todos = np.append(estaturas, santiaguito_estatura[0][0])
colores = ['blue'] * len(estaturas) + ['red']
# Ajustar el ancho de las columnas
ancho_columnas = 0.5
# Graficar la gráfica de columnas
plt.bar(np.arange(len(nombres)), estaturas_todos, color=colores, width=ancho_columnas)
plt.xticks(np.arange(len(nombres)), nombres, rotation=45, ha='right')
plt.title('Estaturas a los 30 años')
plt.xlabel('Nombre')
plt.ylabel('Estatura (cm)')
plt.tight_layout()
plt.show()
#1/1 [==============================] - 0s 61ms/step
#La previsión de estatura de Santiaguito a los 30 años es: 176.33318 cm