Search code examples
pythoncatboost

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.


Solution

  • 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,
    )