Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

Desafío: hora de la práctica - Selección de modelos

# 1) Normalización de datos usando el MinMaxScaler
from sklearn.preprocessing import MinMaxScaler
# Instanciamos el escalador de Min-Max
normalizacion_desafio = MinMaxScaler()
X_train_desafio_normalizado = normalizacion_desafio.fit_transform(X_train_desafio)
pd.DataFrame(X_train_desafio_normalizado)

Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidad

# 2) KNN
from sklearn.neighbors import KNeighborsClassifier
knn_desafio = KNeighborsClassifier()
knn_desafio.fit(X_train_desafio_normalizado, y_train_desafio)
X_test_desafio_normalizado = normalizacion_desafio.transform(X_test_desafio)
knn_desafio.score(X_test_desafio_normalizado, y_test_desafio)
# Resultado: 0.8172
# 3) Seleccionar mejor modelo: Dummy, Árbol o KNN y almacenar modelo con mejor precisión
# Los modelos de transformación también necesitan ser almacenados, que es el caso del OneHotEncoder
# y del MinMaxScaler, en caso de que el KNN tenga el mejor rendimiento.

lista_desafio = [ ('dummy', dummy_desafio, X_test_desafio),
                  ('de árbol', modelo_arbol_desafio, X_test_desafio),
                  ('knn', knn_desafio, X_test_desafio_normalizado)]
for i in lista_desafio:
  print(f'La exactitud del modelo {i[0]}: {i[1].score(i[2],y_test_desafio)}')

# Resultados:
# Dummy: 79.64%
# Árbol: 84.64%
# KNN:   81.72%

# Como el modelo de árbol tiene el mejor desempeño, será el modelo a serializar
# Serializamos el transformador one-hot
with open('modelo_onehotencoder_desafio.pkl','wb') as archivo:
  pickle.dump(one_hot_desafio,archivo)
# Serializamos el modelo de árbol ganador
with open('modelo_champion_desafio.pkl','wb') as archivo:
  pickle.dump(modelo_arbol_desafio,archivo)
# 4) Predicción de nuevo registro
# Creamos un nuevo ejemplo para hacer predicción
nuevo_registro = pd.DataFrame({
    'score_credito': [850],
    'pais':['Francia'],
    'sexo_biologico':['Hombre'],
    'edad': [27],
    'años_de_cliente': [3],
    'saldo': [56000],
    'servicios_adquiridos': [1],
    'tiene_tarjeta_credito': [1],
    'miembro_activo': [1],
    'salario_estimado': [85270.00]
})
# Convertimos el diccionario en un DataFrame
nuevo_registro = pd.DataFrame(nuevo_registro)
nuevo_registro

Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidad

# Cargamos el one-hot encoder serializado
modelo_one_hot_desafio_generado = pd.read_pickle('/content/modelo_onehotencoder_desafio.pkl')

# Cargamos el modelo campeón serializado
modelo_arbol_desafio_generado = pd.read_pickle('/content/modelo_champion_desafio.pkl')
# Transformamos el nuevo dato con el mismo one-hot usado en entrenamiento
nuevo_registro = modelo_one_hot_desafio_generado.transform(nuevo_registro)

# Usamos el modelo serializado para predecir si el cliente se adherirá al plan
print((lambda r: "Con estas características, el modelo predice que el cliente SÍ se irá de la compañia." 
       if r[0] == 1 else "Con estas características, el modelo predice que el cliente NO se irá de la compañia.")(modelo_arbol_desafio_generado.predict(nuevo_registro)))

Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidad

1 respuesta

Hola , espero que estés muy bien.

Felicitaciones por tu aprendizaje. Estamos priorizando el foro para postear dudas, así optimizamos el tiempo de respuesta para ustedes.

Para no dejar de compartir los códigos, actividades y ejercicios que realizas, creamos un canal en Discord (#compartetucodigo) donde puedes compartirlos, dar y sugerir mejoras con el resto de tus compañeros.

Un saludo.

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios