Пользовательский секретарь для GridSearchCV не позволяет использовать вероятности - PullRequest
1 голос
/ 03 июля 2019

Я пытаюсь создать собственный счетчик для GridSearchCV.Вот определение функции:

def custom_auc(ground_truth, probas_):
    fpr, tpr, _ = roc_curve(ground_truth, probas_[:, 1], pos_label=1)    
    return auc(fpr, tpr)

Затем я использую его для создания пользовательского счетчика с именем my_auc:

# to be standart sklearn's scorer        
my_auc = make_scorer(custom_auc, greater_is_better=True, needs_proba=True)

И затем я использую этот пользовательский счетчик вthe GridSearchCV:

param_grid={'C': np.logspace(-2, 2, 40)}
clf = sklearn.model_selection.GridSearchCV(linear_model.LogisticRegression(), 
                                           param_grid = param_grid, 
                                           cv = 10, 
                                           scoring = my_auc, 
                                           verbose=False,
                                           n_jobs=-1)    

best_clf = clf.fit(X_train, y_train)

В строке, где установлена ​​модель, выдается следующая ошибка:

IndexError: слишком много индексов для массива

Проблема в том, что вместо вероятностей прогнозы (1 или 0) передаются в custom_auc.То есть probas содержат прогнозы.

Я проверил с этим, и это сработало:

 return sklearn.metrics.roc_auc_score(ground_truth, probas_) 

Я предпочитаю свой собственный бомбардир вместо существующего 'roc_auc', потому что я хочу вычислить оценку auc на основе falseположительные и истинно положительные показатели в соответствии с рекомендациями https://stackoverflow.com/a/31161137/1845408.

Любая помощь?

...