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.
davy.ai
El error parece estar relacionado con el parámetro
scoring
en la funciónRandomizedSearchCV
. El parámetroscoring
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 paraprecision_score
, se utilizaría el siguiente código: