gym_churn / utils_pack /trans_dataset.py
leofilo's picture
Upload 21 files
2c2d39d verified
import numpy as np
def trans_data_set(df):
# Funci贸n para calcular churn basado en l贸gica combinada
conditions_edad=[
df["edad"]<=25,
(df["edad"]>25) & (df["edad"]<=40),
(df["edad"]>40) & (df["edad"]<=55),
df["edad"]>55
]
choices_edad=[2,3,4,2]
df["edad_cat"]=np.select(conditions_edad, choices_edad)
conditions_frecuencia_visitas=[
df["frecuencia_visitas_mensual"]<=8,
(df["frecuencia_visitas_mensual"]>8) & (df["frecuencia_visitas_mensual"]<=15),
df["frecuencia_visitas_mensual"]>15
]
choices_frecuencia_visitas=[2,3,4]
df["frecuencia_visitas_cat"]=np.select(conditions_frecuencia_visitas, choices_frecuencia_visitas)
conditions_antiguedad=[
df["antig眉edad_meses"]<=6,
(df["antig眉edad_meses"]>6) & (df["antig眉edad_meses"]<=12),
(df["antig眉edad_meses"]>12) & (df["antig眉edad_meses"]<=24),
(df["antig眉edad_meses"]>24) & (df["antig眉edad_meses"]<=36),
df["antig眉edad_meses"]>36
]
choices_antiguedad=[1,2,3,4,5]
df["antiguedad_cat"]=np.select(conditions_antiguedad, choices_antiguedad)
conditions_pago_automatico=[
df["pago_automatico"]==0,
df["pago_automatico"]==1
]
choices_pago_automatico=[2,4]
df["pago_automatico_cat"]=np.select(conditions_pago_automatico, choices_pago_automatico)
conditions_queja_reciente=[
df["queja_reciente"]==0,
df["queja_reciente"]==1
]
choices_queja_reciente=[4,2]
df["queja_reciente_cat"]=np.select(conditions_queja_reciente, choices_queja_reciente)
#%%
riesgo_insatisfacci贸n=df["limpieza_instalaciones"]+df["calidad_equipos"]+df["equipos_disponibles"]+df["dispo_instructores"]+df["precio_percibido"]
riesgo_comportamiento=df["frecuencia_visitas_cat"]+df["edad_cat"]+df["pago_automatico_cat"]+df["queja_reciente_cat"]
avg_riesgo_insatisfacci贸n=riesgo_insatisfacci贸n/5
avg_riesgo_insatisfacci贸n_invertido = 6 - avg_riesgo_insatisfacci贸n # Invertir la escala
avg_riesgo_comportamiento=riesgo_comportamiento/4
riesgo_ponderado=(0.6*avg_riesgo_insatisfacci贸n_invertido)+(0.4*avg_riesgo_comportamiento)
#%%
df["risk"]=riesgo_ponderado
df["churn"] = np.where(riesgo_ponderado > 3.5, 1, 0)
#Tranformar variable genero a binaria
df['genero'] = np.where(df['genero'] == 'F', 1, 0)
return df