16

我正在尝试使用 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)

在此处输入图像描述

4

2 回答 2

30

CatBoost 有几个参数来控制详细程度。那些verbosesilentlogging_level

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

silent有两个可能的值 -TrueFalse

verbose也可以是Trueand False,但也可以是整数。如果它是一个整数 N,那么每第 N 次迭代都会打印出日志。

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

  • 'Silent'表示没有输出到标准输出(重要警告除外)并且与silent=Trueor相同verbose=False
  • 'Verbose'是默认的日志记录模式。它与verbose=Trueor 相同silent=False
  • 'Info'打印出在每次迭代中选择的树。
  • 'Debug'打印很多调试信息。

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

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

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

于 2018-07-05T13:35:57.303 回答
7

设置metric_period=100。它应该工作。

于 2018-10-22T02:17:20.013 回答