Как оценить прогресс GridSearchCV из подробного вывода в Scikit-Learn?
прямо сейчас я запускаю довольно агрессивный поиск сетки. У меня n=135 samples
и я использую 23 folds
использование пользовательского перекрестной проверки поезд / тестовый список. У меня verbose=2
.
следующее, что я побежал:
param_test = {"loss":["deviance"],
'learning_rate':[0.01, 0.025, 0.05, 0.075, 0.1, 0.15, 0.2],
"min_samples_split": np.linspace(0.1, 0.5, 12),
"min_samples_leaf": np.linspace(0.1, 0.5, 12),
"max_depth":[3,5,8],
"max_features":["log2","sqrt"],
"min_impurity_split":[5e-6, 1e-7, 5e-7],
"criterion": ["friedman_mse", "mae"],
"subsample":[0.5, 0.618, 0.8, 0.85, 0.9, 0.95, 1.0],
"n_estimators":[10]}
Mod_gsearch = GridSearchCV(estimator = GradientBoostingClassifier(),
param_grid = param_test, scoring="accuracy",n_jobs=32, iid=False, cv=cv_indices, verbose=2)
я взглянул на подробный вывод в stdout
:
$head gridsearch.o8475533
Fitting 23 folds for each of 254016 candidates, totalling 5842368 fits
основываясь на этом, похоже, что есть 5842368
перестановки пар перекрестной проверки с использованием моих параметров сетки.
$ grep -c "[CV]" gridsearch.o8475533
7047332
похоже, что есть около 7 миллионов перекрестных проверок, которые были сделаны до сих пор, но это больше, чем 5842368
всего подходит...
7047332/5842368 = 1.2062458236
тогда, когда я смотрю на :
$ cat ./gridsearch.e8475533
[Parallel(n_jobs=32)]: Done 132 tasks | elapsed: 1.2s
[Parallel(n_jobs=32)]: Done 538 tasks | elapsed: 2.8s
[Parallel(n_jobs=32)]: Done 1104 tasks | elapsed: 4.8s
[Parallel(n_jobs=32)]: Done 1834 tasks | elapsed: 7.9s
[Parallel(n_jobs=32)]: Done 2724 tasks | elapsed: 11.6s
...
[Parallel(n_jobs=32)]: Done 3396203 tasks | elapsed: 250.2min
[Parallel(n_jobs=32)]: Done 3420769 tasks | elapsed: 276.5min
[Parallel(n_jobs=32)]: Done 3447309 tasks | elapsed: 279.3min
[Parallel(n_jobs=32)]: Done 3484240 tasks | elapsed: 282.3min
[Parallel(n_jobs=32)]: Done 3523550 tasks | elapsed: 285.3min
моя цель:
как я могу узнать прогресс моего gridsearch относительно общего времени, которое это может занять?
что меня смущает:
Каковы отношения между [CV]
строки stdout
, всего подходит в stdout
и задач stderr
?
1 ответов
математика проста, но немного вводит в заблуждение на первый взгляд:
при запуске каждой задачи механизм ведения журнала дает ' [CV]...- линия на
stdout
оstarting
выполнения и после выполнения задачиends
- еще одна строка с добавлением времени на выполнение конкретной задачи (в конце строки).-
кроме того, с некоторыми интервалами времени механизм ведения журнала записывает индикатор выполнения в
stderr
(или если у вас установленverbose
в >50 кstdout
), указывающее количество выполненных задач из общего числа задач (подходит) и общее время, затраченное в настоящее время, как этот:[Parallel(n_jobs=32)]: Done 2724 tasks | elapsed: 11.6s
для вашего случая у вас есть 5842368
всего подходит, т. е. задачи.
ты посчитай 7047332
of ' [CV]...'что around 7047332/2 = 3523666
готовые задачи и индикатор выполнения показывает exactly
сколько задач завершено-3523550 (вокруг-потому что некоторые задачи могут начинаться, но не заканчиваться во время счетный.)
-----------------------------------------------------------------------------------
если что то еще непонятно - не стесняйтесь спрашивать в комментариях