Здесь нужно отметить несколько вещей.
1) randsearch.best_score_
- это средний балл для тестовых сгибов по тренировочным данным, поэтому он не будет совпадать при использовании полных данных для вычисления балла.
2) RandomizedSearchCV будет обучаться на (подгонке) целых данных после нахождения наилучшей комбинации параметров (комбинации параметров, которые дали best_score_
). Поэтому, когда вы набираете баллы по одним и тем же данным, ожидается, что они дадут более высокие результаты.
3) Когда вы указываете scoring='average_precision'
, внутренне оно преобразуется в следующее:
average_precision_scorer = make_scorer(average_precision_score,
needs_threshold=True)
Параметр needs_threshold
здесь равен True
, это означает, что оценщику требуется вывод значения predict_proba()
или decision_function()
от оценщика. Так что ваш второй вывод best_estimator_avg_precision
несопоставим.
А для вашего best_estimator_avg_precision_probs
сделайте это, чтобы проверить, имеет ли это какое-либо значение: -
best_estimator_avg_precision_probs = average_precision_score(y,
randsearch.best_estimator_.predict_proba(X))
Но, тем не менее, очки будут выше из-за пункта 2.