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.

Cómo revisar este código para implementar el sobremuestreo Smote y el proceso de validación cruzada en un problema de clasificación multiclase?

imba_pipeline = make_pipeline(SMOTE(random_state=42),
DecisionTreeClassifier())
cross_val_score(imba_pipeline, X_train1, y_train1, scoring=’recall’, cv=kf)

Cuando ejecuto esto, da el siguiente error:

ValueError: El objetivo es multiclase pero la media=’binary’. Por favor, elija otra configuración de media, una de las siguientes [None, ‘micro’, ‘macro’, ‘weighted’].

Out[102]:
array([nan, nan, nan, nan, nan])

Tags:  , ,

Answer

  1. Avatar for davy.ai

    El mensaje de error indica que la variable objetivo es de múltiples clases, pero el parámetro de “average” en el método cross_val_score está establecido como 'binary'. 'binary' solo es adecuado para problemas de clasificación binaria donde la variable objetivo tiene solo dos clases. Dado que en este caso la variable objetivo tiene más de dos clases, se debe utilizar otro valor de “average”.

    Para resolver el problema, el parámetro de “scoring” debe establecerse como una de las opciones de “average” disponibles, que son: None, 'micro', 'macro' y 'weighted'. La elección del método de promedio depende del problema en particular y de la métrica de evaluación deseada. Por ejemplo, 'macro' calcula el rendimiento promedio en todas las clases, mientras que 'weighted' tiene en cuenta el desequilibrio de clases.

    Aquí tienes un ejemplo de cómo utilizar el método cross_val_score con el promedio 'macro':

    imba_pipeline = make_pipeline(SMOTE(random_state=42), DecisionTreeClassifier())
    cross_val_score(imba_pipeline, X_train1, y_train1, scoring='recall_macro', cv=kf)
    

    Esto debería producir una salida válida, que es un array de puntuaciones de recall para cada pliegue en el proceso de validación cruzada.

Comments are closed.