Question

Je fais un GridSearchCV, et j'ai défini une fonction personnalisée (appelée personnalisé_scorer ci-dessous) pour optimiser. La configuration est donc comme ceci:

gs = GridSearchCV(estimator=some_classifier,
                  param_grid=some_grid,
                  cv=5,  # for concreteness
                  scoring=make_scorer(custom_scorer))

gs.fit(training_data, training_y)

Il s'agit d'une classification binaire. Ainsi, lors de la recherche sur la grille, pour chaque permutation des hyperparamètres, la valeur de score personnalisée est calculée sur chacun des 5 plis laissés après l'entraînement sur les 4 autres plis.

Custom_scorer est une fonction à valeur d'échelle avec 2 entrées: un tableau $ y $ contenant des vérités au sol (c'est-à-dire 0 et 1), et un tableau $ y_ {pred} $ contenant des probabilités prévues (d'être 1, la classe "positive"):

def custom_scorer(y, y_pred):
    """
    (1) y contains ground truths, but only for the left-out fold
    (2) Similarly, y_pred contains predicted probabilities, but only for the left-out fold
    (3) So y, y_pred is each of length ~len(training_y)/5
    """

    return scaler_value

Mais supposons que le scalmer_value renvoyé par Custom_scorer ne dépend pas seulement de $ y $ et $ y_ {pred} $, mais aussi la connaissance de Quelles observations ont été attribués au pli de la gauche. Si je n'ai que $ y $ et $ y_ {pred} $ (Encore une fois: les vérités au sol et les probabilités prédites pour le pli de gauche, respectivement) Lorsque la méthode Custom_scorer est appelée, je ne sais pas quelles lignes appartiennent à ce pli. J'ai besoin d'un moyen de suivre les lignes de Training_data attribuées au pli de la gauche au moment où Custom_scorer est appelé, par exemple les indices des lignes.

Des idées sur la façon la plus simple de le faire? Veuillez me faire savoir si des éclaircissements sont nécessaires. Merci!

Pas de solution correcte

Licencié sous: CC-BY-SA avec attribution
scroll top