ComenzarEmpieza gratis

Validación cruzada K-fold

Vas a trabajar con un problema de clasificación binaria sobre una submuestra de una competición de Kaggle playground. El objetivo es predecir si el famoso jugador de baloncesto Kobe Bryant anotó o falló un tiro concreto.

Los datos de entrenamiento están disponibles en tu espacio de trabajo como el DataFrame bryant_shots. Contiene información de 10.000 tiros con sus propiedades y una variable target "shot\_made\_flag", que indica si el tiro entró o no.

Una de las características del conjunto de datos es "game_id", el partido concreto en el que se realizó el tiro. Hay 541 partidos distintos. Así que estás ante una característica categórica de alta cardinalidad. ¡Vamos a codificarla usando la media del target!

Supón que usas validación cruzada de 5 folds y quieres evaluar una característica codificada por media del target en la validación local.

Este ejercicio forma parte del curso

Cómo ganar una competición de Kaggle con Python

Ver curso

Instrucciones del ejercicio

  • Para lograrlo, tienes que repetir el procedimiento de codificación para la característica categórica "game_id" dentro de cada partición del fold por separado. Tu objetivo es especificar todos los parámetros que faltan en la llamada a mean_target_encoding() dentro de cada partición del fold.
  • Recuerda que los parámetros train y test esperan los DataFrames de entrenamiento y de prueba.
  • Mientras que los parámetros target y categorical esperan los nombres de la variable objetivo y de la característica categórica que se va a codificar.

Ejercicio interactivo práctico

Prueba este ejercicio y completa el código de muestra.

# Create 5-fold cross-validation
kf = KFold(n_splits=5, random_state=123, shuffle=True)

# For each folds split
for train_index, test_index in kf.split(bryant_shots):
    cv_train, cv_test = bryant_shots.iloc[train_index], bryant_shots.iloc[test_index]

    # Create mean target encoded feature
    cv_train['game_id_enc'], cv_test['game_id_enc'] = mean_target_encoding(train=cv_train,
                                                                           test=____,
                                                                           target='shot_made_flag',
                                                                           categorical='____',
                                                                           alpha=5)
    # Look at the encoding
    print(cv_train[['game_id', 'shot_made_flag', 'game_id_enc']].sample(n=1))
Editar y ejecutar código