es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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))

Tags:  , , ,

Answer

  1. Avatar for 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:

    import pandas as pd
    from sklearn.metrics import roc_auc_score
    
    # define the auc_group function
    def auc_group(df):
        y_hat = df.expected
        y = df.actual
        return (roc_auc_score(y, y_hat))
    
    # read in the dataframe
    df = pd.read_csv("data.csv")
    
    # apply the auc_group function cumulatively using the expanding function
    auc_cumulative = df.expanding().apply(auc_group)
    
    # add the results to a new column in the dataframe
    df["auc_cumulative"] = auc_cumulative
    

    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.

Comments are closed.