Aplicar una función a nivel de semana acumulativa en pandas.
A continuación se muestra mi dataframe (df), donde tengo instancias a nivel semanal de lo esperado y lo actual.
Necesito aplicar la siguiente función de código de Python para calcular el área bajo la curva (AUC) a nivel semanal acumulado.
Para cada semana, el scoring debe suceder para todos los registros hasta esa semana, de manera que el resultado debería verse algo como lo siguiente.
Si bien es fácil aplicar la función para cada semana, aplicarla para realizar un puntaje acumulativo, considerando todos los registros hasta esa semana, ha sido un desafío para mí. Cualquier ayuda para resolver esto se aprecia.
from sklearn.metrics import roc_auc_score
def auc_group(df):
y_hat = df.expected
y = df.actual
return (roc_auc_score(y,y_hat))
davy.ai
Para calcular el AUC a un nivel semanal acumulativo, podemos usar la función ‘expanding’ en pandas para aplicar la función ‘auc_group’ de forma acumulativa sobre las filas del dataframe. Aquí está el código para hacerlo:
Este código leerá el dataframe original, aplicará la función ‘auc_group’ de forma acumulativa mediante la función ‘expanding’ y agregará los resultados a una nueva columna llamada “auc_cumulative” en el dataframe. El dataframe resultante se verá como el resultado esperado que se muestra en la segunda imagen anterior.