El siguiente script transforma las variables continuas en múltiples variables binarias (0,1) que indican a qué cuartil pertenece la observación para cada variable.
NOTA: En algunas situaciones esto puede significar una perdida de información, para detalle sobre esto, ver referencias 1 y 2.
Conceptualmente sería así:
Mostrando entradas con la etiqueta Preproc. Mostrar todas las entradas
Mostrando entradas con la etiqueta Preproc. Mostrar todas las entradas
sábado, 10 de noviembre de 2018
Calcular acumulados con Pandas
Si se tiene un dataset con transacciones históricas de usuarios, y se quiere hacer variables que midan acumulados en cada momento (eje: monto consumo en últimos 30dias, promedio consumo el últimos 90 días, etc.), puede usarse el siguiente script que usa funciones de pandas para calcularlo.
Conceptualmente seria así:
Script:
import pandas as pd def cumulative(data, id2, fdate, not_feature, windows=[30, 90]): """calcula acumulados para describir tendencia""" data2 = data.copy() headers = data2.columns.values.tolist() headers = [x for x in headers if x not in not_feature] for col in headers: print('calculating windows for:',col) for d in windows: nd = str(d)+'d' data2[col+'_sum_'+nd] = data2.set_index('fecha').groupby(id2)[col].rolling(nd).sum().values return data2 if __name__ == '__main__': path = 'https://www.dropbox.com/s/3g4rz8a0lpvkag4/payment.csv?dl=1' data = pd.read_csv(path) data['fecha'] = pd.to_datetime(data['fecha']) data = data.sort_values(['user_id', 'fecha'], ascending=[True, True]) not_feature = ['fecha', 'user_id'] data2 = cumulative(data, 'user_id', 'fecha', not_feature, windows=[30, 90]) data2.to_csv('data2.csv')
sábado, 9 de diciembre de 2017
Discretizar variables continuas
Una forma de discretizar una variable continua es calcular los cuantiles y luego crear variable dummy con cada cuantil. Esta transformación es usada para entrenar modelos predictivos. Para detalle sobre cúando conviene discretizar, ver referencia 1 y 2, para otros métodos de discretización, ver referencia 3 y 4.
El siguiente script calcula los deciles de la variable total_day_calls y luego imprime el script (sql o qlik) para crear variables dummy de cada rango.
Conceptualmente seria así:
y la transformacion queda así:
lunes, 7 de agosto de 2017
Crear variables dummy de un texto
Para identificar la secuencia de palabras mas repetidas en un texto, y luego hacer variables dummy en SQL, teniendo algo como:
domingo, 16 de abril de 2017
Creación de variables de grupo
Si se tiene un dataset para predecir una clase, y dentro de las variables existen algunas que son discretas (como ciudad, empresa, rubro, etc), puede usarse esta variable discreta para crear nuevas variables "dummies" que agrupen los valores que mejor ajusten la clase a predecir.
En este ejemplo se transforma la variable discreta "state" para crear una matriz dispersa con valores dummies, luego se ajusta un modelo usando el algoritmo ExtraTreesClassifier para predecir la clase "churn". Después de tener el modelo se extrae la importancia de las variables para identificar (usando percentiles) las nuevas variables dummies a crear.
Nota: Para la importancia de la variable, el algoritmo ExtraTreesClassifier usa la medida "Mean Decrease Impurity Importance", también llamado "Gini importance", "Mean Decrease Gini", etc. Para detalles, ver Referencia No.1. Para detalles sobre sesgos en el calculo de la importancia, ver Referencia No.2. Para ver las imágenes, estas se pueden descargar AQUI
El proceso conceptual sigue estos pasos:
PASO 1
Cargar el dataset que contiene la variable a predecir (churn en este caso) y la variable discreta a descomponer. Seria algo así:
PASO 2
Transoformar variable discreata en matriz dispersa, usando la función get_dummies de la librería pandas, quedando así:
Suscribirse a:
Entradas (Atom)






