抑制 Optuna 中的 LightGBM 警告

Aks*_*hat 6 lightgbm optuna

当我使用 Optuna 调整模型时,我收到以下警告。请告诉我如何抑制这些警告?

[LightGBM] [Warning] feature_fraction is set=0.2, colsample_bytree=1.0 will be ignored. Current value: feature_fraction=0.2
[LightGBM] [Warning] min_data_in_leaf is set=5400, min_child_samples=20 will be ignored. Current value: min_data_in_leaf=5400
[LightGBM] [Warning] min_gain_to_split is set=13.203719815769512, min_split_gain=0.0 will be ignored. Current value: min_gain_to_split=13.203719815769512
Run Code Online (Sandbox Code Playgroud)

sed*_*deh 2

我不熟悉 Optuna,但我使用 Python/lightgbm 遇到了这个问题。

从 v3.3.2 开始,参数调整页面包含似乎已重命名、已弃用或重复的参数。但是,如果您坚持设置/调整模型对象中指定的参数,则可以避免此警告。

from lightgbm import LGBMRegressor
params = LGBMRegressor().get_params()
print(params)
Run Code Online (Sandbox Code Playgroud)

这些是您想要设置的唯一参数。如果您希望能够包含所有参数,您可以执行如下操作。

from lightgbm import LGBMRegressor
lgr = LGBMRegressor()
params = lgr.get_params()
aliases = [
    {'min_child_weight', 'min_sum_hessian_in_leaf'},
    {'min_child_samples', 'min_data_in_leaf'},
    {'colsample_bytree', 'feature_fraction'},
    {'subsample', 'bagging_fraction'}
]
for alias in aliases:
    if len(alias & set(params)) == 2:
        arg = random.choice(sorted(alias))
        params[arg] = None
lgr = LGBMRegressor(**params)
Run Code Online (Sandbox Code Playgroud)

该代码在每个似乎重复的参数对中设置一个或另一个。现在,当您致电时,lgr.fit(X, y)您不应该收到警告。