如何抑制Optuna中LightGBMTunerCV输出的cv_agg's binary_logloss日志?
关闭LightGBMTunerCV冗余cv日志的解决方案
你当前配置不生效的核心原因是定义的log_evaluation回调没有传入LightGBMTunerCV的初始化参数,按以下方式调整即可完全关闭冗余日志:
- 将预先定义的
callbacks参数传入LightGBMTunerCV初始化参数,作用于每轮交叉验证训练,直接关闭迭代loss输出 - 若不需要调优进度条,可新增
show_progress_bar=False参数 - 若要进一步过滤Optuna框架的其他无关日志,可设置Optuna日志级别为仅输出警告及以上内容
修改后的完整代码如下:
from sklearn.datasets import load_breast_cancer from sklearn.model_selection import train_test_split import optuna.integration.lightgbm as lgb import optuna # 关闭Optuna默认的 info 级别日志,仅保留警告和报错 optuna.logging.set_verbosity(optuna.logging.WARNING) import warnings warnings.simplefilter(action='ignore', category=FutureWarning) warnings.simplefilter(action='ignore', category=UserWarning) breast_cancer = load_breast_cancer() X_train, X_test, Y_train, Y_test = train_test_split(breast_cancer.data, breast_cancer.target) train_dataset = lgb.Dataset(X_train, Y_train, feature_name=breast_cancer.feature_names.tolist()) test_dataset = lgb.Dataset(X_test, Y_test, feature_name=breast_cancer.feature_names.tolist()) callbacks = [lgb.log_evaluation(period=0)] tuner = lgb.LightGBMTunerCV({"objective": "binary", 'verbose': -1}, train_set=test_dataset, num_boost_round=10, nfold=5, stratified=True, shuffle=True, callbacks=callbacks, show_progress_bar=False) # 不需要关闭进度条可删除此行 tuner.run()
修改后运行不会再输出cv_agg's binary_logloss相关的日志,可大幅降低IO开销,适配大数据集的调优场景。
内容的提问来源于stack exchange,提问作者NonStopAggroPop
相关产品推荐
相关产品推荐

