Я выполняю перекрестную проверку с моей моделью lightgbm следующим образом.
И я хочу использовать tqdm
в цикле for, чтобы я мог проверить процесс.
folds = KFold(n_splits=num_folds, random_state=2319)
oof = np.zeros(len(train))
getVal = np.zeros(len(train))
predictions = np.zeros(len(target))
feature_importance_df = pd.DataFrame()
print('Light GBM Model')
for fold_, (trn_idx, val_idx) in enumerate(folds.split(train.values, target.values)):
X_train, y_train = train.iloc[trn_idx][features], target.iloc[trn_idx]
X_valid, y_valid = train.iloc[val_idx][features], target.iloc[val_idx]
print("Fold idx:{}".format(fold_ + 1))
trn_data = lgb.Dataset(X_train, label=y_train, categorical_feature=categorical_features)
val_data = lgb.Dataset(X_valid, label=y_valid, categorical_feature=categorical_features)
clf = lgb.train(param, trn_data, 1000000, valid_sets = [trn_data, val_data], verbose_eval=5000, early_stopping_rounds = 4000)
oof[val_idx] = clf.predict(train.iloc[val_idx][features], num_iteration=clf.best_iteration)
getVal[val_idx]+= clf.predict(train.iloc[val_idx][features], num_iteration=clf.best_iteration) / folds.n_splits
fold_importance_df = pd.DataFrame()
fold_importance_df["feature"] = features
fold_importance_df["importance"] = clf.feature_importance()
fold_importance_df["fold"] = fold_ + 1
feature_importance_df = pd.concat([feature_importance_df, fold_importance_df], axis=0)
predictions += clf.predict(test[features], num_iteration=clf.best_iteration) / folds.n_splits
print("CV score: {:<8.5f}".format(roc_auc_score(target, oof)))
Я пытался использовать tqdm(enumerate(folds.split(train.values, target.values))
или enumerate(tqdm(folds.split(train.values, target.values)))
, но это не работает.
Я предполагаю причину, по которой они не работали, потому что enumerate
не имеет длины.
Но мне интересно, как использовать tqdm в этой ситуации.
Кто-нибудь может мне помочь?
Заранее спасибо.