GridSearchCV расширяет класс BaseSearchCV. Это означает, что он будет использовать функцию fit()
, определенную в BaseSearchCV .
Так что теперь, как вы можете видеть в исходном коде здесь :
...
...
scorers, self.multimetric_ = _check_multimetric_scoring(
self.estimator, scoring=self.scoring)
...
...
Здесь проверяются все параметры, предоставленные при создании GridSearchCV.
Для 'scoring'
param это вызов метода _check_multimetric_scoring()
. Теперь поверх этого файла вы увидите много импортов.
Метод _check_multimetric_scoring
указывает на scorer.py
файл :
Аналогично отслеживая вызовы методов, мы достигнем здесь :
SCORERS = dict(explained_variance=explained_variance_scorer,
r2=r2_scorer,
neg_median_absolute_error=neg_median_absolute_error_scorer,
neg_mean_absolute_error=neg_mean_absolute_error_scorer,
neg_mean_squared_error=neg_mean_squared_error_scorer,
neg_mean_squared_log_error=neg_mean_squared_log_error_scorer,
accuracy=accuracy_scorer, roc_auc=roc_auc_scorer,
...
...
...
...
Глядя на roc_auc
, мы достигнем здесь :
roc_auc_scorer = make_scorer(roc_auc_score, greater_is_better=True,
needs_threshold=True)
Теперь посмотрите на параметры здесь, roc_auc_score
отправлено на make_scorer
. Так откуда он импортируется? Посмотрите на верхнюю часть этого файла, и вы увидите это:
from . import (r2_score, median_absolute_error, mean_absolute_error,
mean_squared_error, mean_squared_log_error, accuracy_score,
f1_score, roc_auc_score, average_precision_score,
precision_score, recall_score, log_loss,
balanced_accuracy_score, explained_variance_score,
brier_score_loss)
Итак, фактический объект скоринга возвращается в GridSearchCV.
Теперь библиотека использует относительный и абсолютный импорт, и, как правильно сказал @Denziloe, этот импорт является локальным для этого модуля, а не глобальным импортом.
См. Эти ответы для получения дополнительной информации о области импорта и пространствах имен:
И эта страница документации по питону