python - 运行时如何更改 LightGBM 参数?
问题描述
因此,我想在 LightGBM 运行or
后更改其参数运行 10000 次后,我想添加另一个具有不同参数的模型,但使用之前训练的模型。
像这样的东西:
params = {
"objective" : "regression",
"metric" : "mae",
"num_leaves" : 35,
"learning_rate" : 0.05,
"bagging_fraction" : 0.7,
"bagging_seed" : 0,
"num_threads" : 4,
"colsample_bytree" : 0.7,
'min_data_in_leaf':200,
'min_split_gain':0.0004,
'lambda_l2':0.1
}
model = lgb.train( params,
train_set = train_set,
num_boost_round=1000,
early_stopping_rounds=200,
verbose_eval=100,
valid_sets=[train_set,valid_set]
)
params = {
"objective" : "dart",
"metric" : "mae",
"num_leaves" : 44,
"learning_rate" : 0.01,
"bagging_fraction" : 0.3,
"bagging_seed" : 0,
"num_threads" : 4,
"colsample_bytree" : 0.1,
'min_data_in_leaf':400,
'min_split_gain':0.0001,
'lambda_l2':0.2
}
model = lgb.train(
params,
train_set = train_set,
num_boost_round=2000,
early_stopping_rounds=200,
verbose_eval=100,
init_model=model,
valid_sets=[train_set,valid_set]
)
但是在这里,当我使用时init_model=model
,我得到了这个错误:
LightGBMError: Cannot set predictor after freed raw data, set free_raw_data=False when construct Dataset to avoid this.
解决方案
这是幸运的错误之一,您需要完全按照错误消息的说明进行操作(这是我的一段代码):
d_train = lgb.Dataset(x_train, label=y_train, free_raw_data = False)
当您构建 lightgbm.Dataset 对象时,验证集和测试集也是如此。
其余的不需要更改,您的代码看起来不错(也是 init_model 部分)。问题在于 LightGBM 的 Python 包装器,需要为此类拉入/拉出模型使用免费设置原始数据的构造。如果您有兴趣更深入地了解情况,只需查看:https ://lightgbm.readthedocs.io/en/latest/FAQ.html
我相信这个答案会解决你的情况。但如果没有,请不要犹豫,问更多。祝你好运!
推荐阅读
- tensorflow2.0 - 如何在 Colab 上使用 TPU 迁移 Learn
- html - 对齐css和html中的图标
- json - 在 SQL Server 中更新 JSON 列中的多个属性
- linux - 无法使用 ImageMagick 打开 .jpg、.png 或 .tif 文件,只能使用 .gif 文件
- python - `isinstance` 与 `collecitons.abc.Collection` 和 `collections.abc.Mapping` 的不同结果
- vb.net - VB.NET 在拖放时检查 keydown
- java - 通过 Maven / Eclipse 导入 Spotify API 客户端库
- python - 带有 configparser 的打开函数的 TypeError
- azure - 在 terraform 中,如何为 azure 中的应用服务设置新的路径映射?
- android - 浏览器的 ADB 查询