如何抑制 CatBoost 迭代结果?

How to suppress CatBoost iteration results?

我正在尝试使用 CatBoost 来拟合二元模型。当我使用以下代码时,我认为 verbose=False 可以帮助抑制迭代日志。但它没有。有没有办法避免打印迭代?

model=CatBoostClassifier(iterations=300, depth=6, learning_rate=0.1, 
loss_function='Logloss',
         rsm = 0.95, 
         border_count = 64, 
         eval_metric =  'AUC', 
         l2_leaf_reg= 3.5, 
         one_hot_max_size=30, 
         use_best_model = True,
         verbose=False,
         random_seed = 502)

model.fit(X_train, y_train,
     eval_set=(X_test_filtered, y_test_num),   
     verbose = False,
     plot=True)

CatBoost 有几个参数来控制冗长。它们是 verbosesilentlogging_level

默认情况下,日志记录是详细的,因此您会在每次迭代中看到损失值。 如果你想看到更少的日志记录,你需要使用这些参数之一。 不能同时设置两个

silent 有两个可能的值 - TrueFalse.

verbose也可以是TrueFalse,也可以是整数。如果它是一个整数 N,那么将在每第 N 次迭代时打印出日志记录。

logging_level 可以是 'Silent''Verbose''Info''Debug':

  • 'Silent' 表示没有输出到标准输出(重要警告除外) 与 silent=Trueverbose=False.
  • 相同
  • 'Verbose' 是 默认记录模式。与 verbose=Truesilent=False.
  • 'Info' 打印出选择的树 每次迭代。
  • 'Debug' 打印大量调试信息。

您可以在两个地方使用这些参数。 第一个是模型创建。第二个是拟合创建的模型。 如果您在创建模型时使用了一个参数,那么在拟合函数中没有指定参数的情况下,它将在拟合过程中使用。

如果您在 fit 函数中使用参数,则将使用此参数选择的模式。

在您的情况下,您似乎遇到了错误。下次您看到一些错误时,最好的办法是使用 GitHub 页面上的问题向 CatBoost 团队报告。此错误应该已经修复,因此请尝试升级到最新版本或从源代码构建代码。

设置metric_period=100。应该可以。