No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Evaluando métricas de desempeño

15/22
Recursos

Aportes 12

Preguntas 2

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Like si se te reinició Google Colab porque agotaste toda la RAM disponible.

Para prevenir el reinicio del colab por falta de RAM lo que hice fue exportar el dataframe y agregarlo a un nuevo notebook.

Dejo el código por si a alguien más le interesa

#preparacion del df con las variables consolidadas
mi_consolidado = consolidado.copy(deep=True)

def OneHotEncoding_df(df, columna):
  OHE_df = pd.get_dummies(columna+'_'+df[columna])
  return OHE_df
objects_list = list(types[types.values == 'object'].index)

#Se realiza OHE para cada categoría
for category in objects_list:
  mask = OneHotEncoding_df(mi_consolidado, category)
  print(f'column {category} transformed!')
  mi_consolidado.drop(category, axis=1, inplace=True)
  mi_consolidado = pd.concat([mi_consolidado, mask], axis=1)

# exportar modelo
mi_consolidado.to_pickle('variables_consolidadas.pkl')

En el nuevo notebook hice la división de datos de entrenamiento y prueba de esta manera:

variables_consolidadas = pd.read_pickle('variables_consolidadas.pkl')
objetivo = variables_consolidadas['outcome']
variables_consolidadas.drop('outcome', axis=1, inplace=True)

ya despues de aqui todo es igual al notebook de la clase.

from sklearn.model_selection import train_test_split
# Entrenamiento y prueba con relación 80:20
x_train, x_test, y_train, y_test = train_test_split(variables_consolidadas,objetivo, test_size=0.2,random_state=2020)
# Entrenamiento y validación con relación 90:10
x_train, x_val, y_train, y_val = train_test_split(x_train,y_train, test_size=0.1, random_state=2020)

print("Shape of x_train:",x_train.shape)
print("Shape of x_test:",x_test.shape)
print("Shape of x_val:",x_val.shape)
print("Shape of y_train:",y_train.shape)
print("Shape of y_test:",y_test.shape)
print("Shape of y_val:",y_val.shape)

`

La columna people_id no debería ser considerada en el entrenamiento o aprendizaje de la red neuronal. No aporta información para generalizar a los clientes

En vez de hacer model.add() tambien se puede hacer:
model = Sequential([Capa 1, Capa 2, etc])

En mi caso para graficar tuve que guardar el entrenamiento del modelo como una variable, dejo las ultimas partes de mi notebook

# Volvemosa utilizar el modelo anterior sustituyendo los dataframes
model = Sequential()
model.add(Dense(512,input_dim = x_train_scaled.shape[1],activation="relu"))
model.add(Dense(512,activation="relu"))
model.add(Dense(256,activation="relu"))
model.add(Dense(1,activation = "sigmoid"))
model.compile(optimizer = "Adam",loss="binary_crossentropy",metrics=["accuracy"])
#guardar modelo en una variable para acceder al diccionario de valores
history = model.fit(x_train_scaled,y_train, validation_data = (x_val_scaled,y_val),epochs=12, batch_size=128)

Grafica

import matplotlib.pyplot as plt
%matplotlib inline

plt.figure(figsize=(13,6))
plt.plot(history.history['loss'])
plt.plot(history.history['val_loss'])
plt.title("Pérdidas del modelo con set de entrenamiento y pruebas por época")
plt.ylabel('Pérdidas')
plt.xlabel('Épocas')
plt.legend(['Entrenamiento', 'Validación'], loc='upper right')
plt.show()

![](

import matplotlib.pyplot as plt
%matplotlib inline

plt.figure(figsize=(13,6))
plt.plot(history.history['loss'])
plt.plot(history.history['val_loss'])
plt.title("Pérdidas del modelo con set de entrenamiento y pruebas por época")
plt.ylabel('Pérdidas')
plt.xlabel('Épocas')
plt.legend(['Entrenamiento', 'Validación'], loc='upper right')
plt.show()

![](

Se repite el vídeo .-.

Falta el vídeo de este tema. Se repite. Parece que sólo el departamento de ventas trabaja en esta empresa

Antes de simplemente escribir la red nuronal se debio de hacer un feature_selection con:

datafame_total.corr()[“outcome”].abs().sort_values()

con esto se encuentra las correlaciones que existen entre los distintos features ( mientras mas cerca a 0 menos influyen y se deben de descartar) ,aqui se observa que almenos 10 features de estan en vano y se deben eliminar para aligerar el modelo

Justo antes de terminar la primera epoch me salta este error:
ValueError: Data cardinality is ambiguous:
x sizes: 439459
y sizes: 175784
Make sure all arrays contain the same number of samples.

El tamaño de los conjuntos y la arquitectura son iguales a los del video, no se como solucionarlo.

En mi caso usé la potencia de mi PC y no la Colab, debo decir que me tardo como 2 hs en completar todo los modelos 😃

Recordemos que binary cross entropy o log function es la misma funcion de perdida que se usa para la regresion logistica, ya que nuestra ultima neurona(output) usa la funcion sigmoide como funcion de activacion.

Me demore por el computo tres horas en este video jajajaja