Igor T. Podolak
Igor T. Podolak

Reputation: 65

CatBoost -- suppressing iteration results in a grid search

I am trying to use CatBoost Classifier. Using it I do perform a grid search using randomised_search() method. Unfortunately, the method prints to stdout iteration results for each tree built for each model tried.

There is a parameter supposed to control this: verbose. Ideally verbose could be set to False to inhibit all stdout prints, or set to an integer, specifying an interval between models which are reported (models, no trees).

Do you know how to control this? I get millions of lines in log files...

This question is somehow related to How to suppress CatBoost iteration results?, but that one related to the fit() method, which has a logging_level, silent parameters as well. Another method, the cv() cross validation, responds to logging_level='Silent' cutting out all output.

Upvotes: 4

Views: 3287

Answers (1)

user11989081
user11989081

Reputation: 8654

Setting both logging_level='Silent' when instantiating the model and verbose=False when running the random search should suppress all outputs.

import catboost
from sklearn.datasets import make_classification
from scipy import stats

# generate some data
X, y = make_classification(n_features=10)

# instantiate the model with logging_level='Silent'
model = catboost.CatBoostClassifier(iterations=1000, logging_level='Silent')

pool = catboost.Pool(X, y)

parameters = {
    'learning_rate': stats.uniform(0.01, 0.1),
    'depth': stats.binom(n=10, p=0.2)
}

# run random search with verbose=False
randomized_search_results = model.randomized_search(
    parameters,
    pool,
    n_iter=10,
    shuffle=False,
    plot=False,
    verbose=False,
)

Upvotes: 7

Related Questions