Created
September 11, 2024 02:00
-
-
Save robintux/142a71eef5b5ffc8fbbcbeee1d0f280b to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# %% Primer Paso : Datos y modulos | |
import numpy as np | |
import pandas as pd | |
import matplotlib.pyplot as plt | |
import seaborn as sns | |
# Keras | |
from keras.layers import Dense | |
from keras.models import Sequential | |
import os | |
os.chdir("/home/abraham/Desktop/PDE_ML_Jul2022") | |
# Cargaremos el dataset : pima-indians | |
url = "https://raw.githubusercontent.com/robintux/Datasets4StackOverFlowQuestions/master/pima-indians-diabetes.csv" | |
dataset = pd.read_csv(url, | |
header = None) | |
# Pima Indians | |
# Problema de clasificacion (la 9na columna es la variable dependiente) | |
# Todas las variables independientes son numericas (colmnas 0,1,2,..., 8) | |
X = dataset.loc[:,0:7] | |
y = dataset.loc[:,8] | |
# Deseo obtener : y = f(X) | |
# f : red neuronal | |
# %% 2do Paso : Definamos el modelos | |
# Creamos el modelo : Clase Sequential | |
model1 = Sequential() | |
# En model1 almacenamos el esqueleto de mi estructura | |
# Agregamos capas a mi red neuronal : | |
# Agreguemos una capa para definir la capa de entrada (con el | |
# correspondiente numero de variables independiente : 8) y el numero | |
# de neuronas de la primera capa oculta, ademas de la funcion de | |
# activacion. | |
model1.add(Dense(input_dim = 8, units = 15, activation = "relu", | |
name = "1eraCapaOculta_5Neuronas") ) | |
# | |
# Agreguemos otra capa oculta : neuronas = 7 | |
model1.add(Dense(units = 12, activation = "tanh", | |
name = "2daCapaOculta_7Neuronas")) | |
# | |
# Agreguemos una 3era capa oculta con 12 neuronasl | |
model1.add(Dense(units = 20, activation = "relu", | |
name = "3eraCapaOculta_12Nueronas")) | |
# | |
# Agreguemos nuestra capa de salida | |
# Aqui es donde debemos tener en consideracion la naturaleza de la variable | |
# de respuesta/target : y (binaria). Esto para especificar la funcion de | |
# activacion | |
model1.add(Dense(1,activation = "sigmoid", | |
name ="Capa_de_SAlida")) | |
# Observemos a model1 | |
# from keras.utils.vis_utils import plot_model | |
from keras.utils import plot_model | |
plot_model(model1, | |
show_shapes = True, | |
show_layer_names = True) | |
# %% 3er Paso : Compilamos el modelo | |
# COnsideremos 3 aspectos de la compilacion de la arquitectura | |
# diseñada en el paso anterior : | |
# Funcion de Perdida : Esta en dependencia de la variable de salida | |
# https://math.libretexts.org/Courses/Universidad_Complutense_de_Madrid/Las_matematicas_de_la_inteligencia_artificial/07%3A_Redes_Neuronales/7.04%3A_Funciones_de_Perdida | |
# https://keepcoding.io/blog/funcion-perdidas-deep-learning/ | |
# Optimizador | |
# metrica | |
# COmpilamos | |
model1.compile(loss = "binary_crossentropy", | |
optimizer = "adam", | |
metrics = ["accuracy"] | |
) | |
# %% 4to Pasoo : Ajustamos nuestro dataset a la arquitectura de RN | |
# | |
# Usamos el metodo fit | |
# Debemos tener en cuenta dos argumentos : | |
# epoch : Pasamos a traves de todas las filas de nuestro | |
# conjunto de datos | |
# | |
# batch_size : Numero de filas consideradas porel modelo dentro | |
# de una apoca antes de actualizar los pesos | |
model1.fit(X, y, batch_size = 10, epochs = 15) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment