Классификатор Catboost выдает ошибку при подгонке

#python #scikit-learn

#питон #scikit-learn

Вопрос:

 %%time
from catboost import Pool
from catboost import cv

from sklearn.model_selection import StratifiedKFold

n_fold = 4 # amount of data folds
folds = StratifiedKFold(n_splits=n_fold, shuffle=True, random_state=SEED)

params = {'loss_function':'Logloss',
          'eval_metric':'AUC',
          'verbose': 200,
          'random_seed': SEED,
          'nan_mode' : 'Forbidden'
         }

X_test = test_df.drop(columns='attended').reset_index(drop=True)

cat_features1 = X_test.columns.to_list()
test_data = Pool(data=X_test, 
                 cat_features=cat_features1)

scores = []
prediction = np.zeros(test_data.shape[0])

for fold_n, (train_index, valid_index) in enumerate(folds.split(X, y)):
    
    X_train, X_valid = X.iloc[train_index], X.iloc[valid_index] #train and validation data splits
    y_train, y_valid = y.iloc[train_index], y.iloc[valid_index]
    
    train_data = Pool(data=X_train, 
                      label=y_train, 
                      cat_features=cat_features1)
    valid_data = Pool(data=X_valid, 
                      label=y_valid,
                      cat_features=cat_features1)
    model = CatBoostClassifier(**params)
    model.fit(train_data,
              eval_set=valid_data, 
              use_best_model=True,
              plot=True ) 
    
    score = model.get_best_score()['validation_0']['AUC']
    scores.append(score)

    y_pred = model.predict_proba(test_data)[:, 1]
    prediction  = y_pred
    
    #y_pred = model.predict(test_data)[:, 1]
    #prediction  = y_pred

prediction /= n_fold
print('n','CV mean: {:.4f}, CV std: {:.4f}'.format(np.mean(scores), np.std(scores)))

 

Получение ошибки для приведенного выше кода. Ошибка возникает при добавлении оценки.
Этот код работает у меня уже почти шесть месяцев. Но после загрузки anaconda я, вероятно, ошибся с версией пакета. И получаю следующую ошибку.
Кто-нибудь может, пожалуйста, определить проблему здесь?
Заранее спасибо!

Обратная трассировка KeyError (последний последний вызов) в KeyError: ‘validation_0’

Комментарии:

1. Мое быстрое решение на данный момент заключается в том, что я не собираю результаты каждого запуска. Я прокомментировал « #оценка = model.get_best_score()[‘validation_0’][‘AUC’] #scores.append(оценка) ` ` Но это не идеальный способ справиться со случаем.