Scikit узнать производительность GridSearchCV AUC

Я использую GridSearchCV, чтобы определить лучший набор параметров для классификатора случайного леса.

PARAMS = {
    'max_depth': [8,None],
    'n_estimators': [500,1000]
}
rf = RandomForestClassifier()
clf = grid_search.GridSearchCV(estimator=rf, param_grid=PARAMS, scoring='roc_auc', cv=5, n_jobs=4)
clf.fit(data, labels)

где данные и метки - соответственно полный набор данных и соответствующие метки.

Теперь я сравнил производительность, возвращаемую GridSearchCV (из clf.grid_scores_) с "ручной" оценкой AUC:

aucs = []
for fold in range (0,n_folds):
    probabilities = []
    train_data,train_label = read_data(train_file_fold)
    test_data,test_labels = read_data(test_file_fold)
    clf = RandomForestClassifier(n_estimators = 1000,max_depth=8)
    clf = clf.fit(train_data,train_labels)
    predicted_probs = clf.predict_proba(test_data)
    for value in predicted_probs:
       for k, pr in enumerate(value):
            if k == 1:
                probabilities.append(pr)
    fpr, tpr, thresholds = metrics.roc_curve(test_labels, probabilities, pos_label=1)   
    fold_auc = metrics.auc(fpr, tpr)
    aucs.append(fold_auc)

performance = np.mean(aucs)

где я вручную предварительно разбил данные на тренировочный и тестовый набор (тот же подход с 5 CV).

Значения AUC, возвращаемые GridSearchCV всегда выше, чем рассчитанный вручную (например, 0,62 против 0,70) при использовании одного и того же параметра для RandomForest, Я знаю, что разное обучение и разделение тестов может дать вам разную производительность, но это происходило постоянно при тестировании 100 повторений GridSearchCV. Интересно, если я использую accuarcy вместо roc_auc Что касается показателя оценки, разница в производительности минимальна и может быть связана с тем, что я использую разные тренировочные и тестовые наборы. Это происходит потому, что значение AUC GridSearchCV оценивается иначе, чем при использовании metrics.roc_curve?

0 ответов

Другие вопросы по тегам