首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用lightgbm的GridSearchCV要求不使用fit()方法吗?

使用lightgbm的GridSearchCV要求不使用fit()方法吗?
EN

Stack Overflow用户
提问于 2020-06-30 16:54:37
回答 1查看 680关注 0票数 1

我正在尝试使用sklearn在LightGBM估计器上执行GridSearchCV,但在构建搜索时遇到了问题。

我要构建的代码如下所示:

代码语言:javascript
复制
d_train = lgb.Dataset(X_train, label=y_train)
params = {}
params['learning_rate'] = 0.003
params['boosting_type'] = 'gbdt'
params['objective'] = 'binary'
params['metric'] = 'binary_logloss'
params['sub_feature'] = 0.5
params['num_leaves'] = 10
params['min_data'] = 50
params['max_depth'] = 10

clf = lgb.train(params, d_train, 100)

param_grid = {
    'num_leaves': [10, 31, 127],
    'boosting_type': ['gbdt', 'rf'],
    'learning rate': [0.1, 0.001, 0.003]
    }


gsearch = GridSearchCV(estimator=clf, param_grid=param_grid)
lgb_model = gsearch.fit(X=train, y=y)

然而,我遇到了以下错误:

代码语言:javascript
复制
TypeError: estimator should be an estimator implementing 'fit' method, 
          <lightgbm.basic.Booster object at 0x0000014C55CA2880> was passed

但是,LightGBM是使用train()方法而不是fit()进行训练的,因此这种网格搜索是否不可用?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-30 17:29:19

您正在使用的lgb对象不支持scikit-learn接口。这就是为什么你不能以这种方式使用它。

但是,lightgbm包提供了与scikit-learn应用编程接口兼容的类。根据您试图完成的监督学习任务,分类或回归,使用LGBMClassifierLGBMRegressor。以下是分类任务的示例:

代码语言:javascript
复制
from lightgbm import LGBMClassifier
from sklearn.model_selection import GridSearchCV


clf = LGBMClassifier()
param_grid = {
    'num_leaves': [10, 31, 127],
    'boosting_type': ['gbdt', 'rf'],
    'learning rate': [0.1, 0.001, 0.003]
}

gsearch = GridSearchCV(estimator=clf, param_grid=param_grid)
gsearch.fit(X_train, y_train)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62653747

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档