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.

Error de puntuación de precisión: Las métricas de clasificación no pueden manejar una combinación de objetivos multiclase y continuos.

Estoy tratando de optimizar un modelo de clasificación para una métrica de rendimiento específica utilizando ajuste de hiperparámetros. No recibí el error mencionado anteriormente hasta que intenté ajustar mi modelo específicamente para la métrica precision_score; cuando solo utilicé mi modelo como un predictor normal, todo funcionó muy bien, incluso cuando agregué el ajuste de hiperparámetros, todo estaba bien. Solo cuando intenté optimizarlo para una métrica específica, lanzó este error. Este es el código relevante:

scorers = {
    'precision_score': make_scorer(precision_score),
    'recall_score': make_scorer(recall_score),
    'accuracy_score': make_scorer(accuracy_score)
}
rf = RandomForestRegressor()
cv = KFold(n_splits=5, random_state=1, shuffle=False)
rsearch = RandomizedSearchCV(estimator=rf, param_distributions=random_hyperparams, scoring=scorers, refit='precision_score', return_train_score=True, n_iter=50, cv=cv, verbose=2, n_jobs=-1)
rsearch.fit(OS_x, OS_y)

En este código:

  • random_hyperparams: es simplemente una cuadrícula de hiperparámetros aleatorizados que se probarán para encontrar el mejor conjunto.
  • OS_x, OS_y son el conjunto de entrenamiento x e y sobremuestrados utilizando SMC con las formas respectivas: (1290, 33) (1290,)

El error parece estar ocurriendo en la última línea del fragmento de código mostrado.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    El error parece estar relacionado con el parámetro scoring en la función RandomizedSearchCV. El parámetro scoring espera una sola cadena de texto que corresponda a la métrica de rendimiento para optimizar. Sin embargo, en el código proporcionado, se está pasando un diccionario de múltiples funciones de puntuación.

    Para corregir este error, el parámetro scoring solo debe incluir una sola cadena de texto para la métrica de rendimiento deseada a optimizar. Por ejemplo, si el objetivo es optimizar para precision_score, se utilizaría el siguiente código:

    scoring = 'precision'
    rf = RandomForestRegressor()
    cv = KFold(n_splits=5, random_state=1, shuffle=False)
    rf_rsearch = RandomizedSearchCV(estimator=rf, param_distributions=random_hypparams, scoring=scoring, refit='precision', return_train_score=True, n_iter=50, cv=cv, verbose=2, n_jobs=-1)
    rf_rsearch.fit(OS_x, OS_y)
    

Comments are closed.