Domanda

Sto facendo un GridSearchcv e ho definito una funzione personalizzata (chiamata Custom_scorer di seguito) per l'ottimizzazione. Quindi l'installazione è così:

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

gs.fit(training_data, training_y)

Questa è una classificazione binaria. Quindi, durante la ricerca della griglia, per ogni permutazione di iperparametri, il valore del punteggio personalizzato viene calcolato su ciascuna delle 5 pieghe di sinistra dopo l'allenamento sulle altre 4 volte.

Custom_scorer è una funzione con valori scale con 2 input: un array $ y $ contenente verità di terra (cioè 0 e 1) e un array $ y_ {pred} $ contenente probabilità previste (di essere 1, classe "positiva"):

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

Ma supponiamo che scaler_value restituito da custom_scorer dipenda non solo da $ y $ e $ y_ {pred} $, ma anche conoscenza di quali osservazioni sono stati assegnati alla piega a sinistra. Se ho solo $ y $ e $ y_ {pred} $ (Ancora una volta: le verità di terra e le probabilità previste per la piega a sinistra, rispettivamente) Quando viene chiamato il metodo personalizzato_scorer, non so quali righe appartengono a questa piega. Ho bisogno di un modo per tracciare quali righe di addestramento_data vengono assegnate alla piega a sinistra nel punto quando viene chiamato Custom_scorer, ad esempio gli indici delle righe.

Qualche idea sul modo più semplice per farlo? Per favore fatemi sapere se è necessario chiarimenti. Grazie!

Nessuna soluzione corretta

Autorizzato sotto: CC-BY-SA insieme a attribuzione
scroll top