5

Şu anda oldukça agresif bir ızgara araştırması yapıyorum. Ben n=135 samples var ve özel bir çapraz doğrulama tren/test listesi kullanarak 23 folds çalıştırıyorum. Benim verbose=2'um var. çapraz ait 5842368 permütasyon var gibi görünüyor,Bir GridSearchCV'nin Scikit-Learn'deki ayrıntılı çıktıdaki ilerlemesi nasıl tahmin edilir?

$head gridsearch.o8475533 
Fitting 23 folds for each of 254016 candidates, totalling 5842368 fits 

Buna dayanarak:

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) 

ben stdout içinde ayrıntılı çıkışta bir göz attım:

aşağıdaki

koştum ne benim grid paramları kullanarak doğrulama çiftleri. Orada bugüne kadar yapılmış yaklaşık 7 milyonu çapraz doğrulamaları ama o 5842368 toplam uyan daha olur diye stderr dosyası baktığınızda

$ grep -c "[CV]" gridsearch.o8475533 
7047332 

O Ardından ...

7047332/5842368 = 1.2062458236 

görünüyor :

$ 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 

Amacım:

Gri ​​arama ağımdaki ilerlemeyi, toplam süreye göre nasıl bilebilirim? Ben yaklaşık kafam karıştı ne

:

stderr yılında stdout yılında [CV] çizgi arasındaki ilişki, stdout yılında uyan toplam # ve görevleri nedir?

cevap

1

Matematik basit, ama biraz bir ilk bakışta yanıltıcı:

  1. her görev başlatıldığında yürütme starting hakkında belirterek stdout bir '[CV] ...' satır mekanizmasını verimleri günlüğü ve görev sonrası ends - belirli bir görev için harcanan sürenin eklenmesiyle birlikte başka bir satır (satırın sonunda).

  2. Ayrıca, bazı zaman aralıklarında ile mekanizmayı giriş stderr bir ilerleme çubuğu yazıyor şu anda zaman harcanan toplam görevler (nöbetleri) ve toplam dışına tamamlanan görevin sayısını belirten (veya stdout için> 50 verbose ayarlanmışsa) bir böyle: davanızı için

    [Parallel(n_jobs=32)]: Done 2724 tasks | elapsed: 11.6s

, sen yani 5842368 toplam uyuyor, görevler var.

Sen around 7047332/2 = 3523666 bitmiş görevler olduğu '... [CV]' arasında 7047332 sayılır ve ilerleme çubuğu exactly kaç görevlerini tamamladıktan gösterir - bazı görevler başlayabileceğini için değil, sayım sırasında bitmez - etrafında (3523550).

-----------------------------------------------------------------------------------

hala bir şey net değilse - yorumlarda sormaya çekinmeyin