为了账号安全,请及时绑定邮箱和手机立即绑定

在 gridsearchcv 期间打印网格搜索中使用的参数

在 gridsearchcv 期间打印网格搜索中使用的参数

萧十郎 2021-08-17 18:44:57
我正在尝试在执行网格搜索时查看 gridsearchcv 中的自定义评分函数中当前正在使用的参数。理想情况下,这看起来像:编辑:为了澄清我希望使用网格搜索中的参数,因此我需要能够在函数中访问它们。def fit(X, y):     grid = {'max_features':[0.8,'sqrt'],            'subsample':[1, 0.7],            'min_samples_split' : [2, 3],            'min_samples_leaf' : [1, 3],            'learning_rate' : [0.01, 0.1],            'max_depth' : [3, 8, 15],            'n_estimators' : [10, 20, 50]}       clf = GradientBoostingClassifier()    score_func = make_scorer(make_custom_score, needs_proba=True)    model = GridSearchCV(estimator=clf,                          param_grid=grid,                          scoring=score_func,                         cv=5)def make_custom_score(y_true, y_score):    '''    y_true: array-like, shape = [n_samples] Ground truth (true relevance labels).    y_score : array-like, shape = [n_samples] Predicted scores    '''    print(parameters_used_in_current_gridsearch)    …    return score我知道我可以在执行完成后获取参数,但是我试图在代码执行时获取参数。
查看完整描述

3 回答

?
Smart猫小萌

TA贡献1911条经验 获得超7个赞

如果您需要在网格搜索步骤之间实际执行某些操作,则需要使用一些较低级别的 Scikit-learn 功能编写自己的例程。


GridSearchCV在内部使用ParameterGrid该类,您可以对其进行迭代以获得参数值的组合。


基本循环看起来像这样


import sklearn

from sklearn.model_selection import ParameterGrid, KFold


clf = GradientBoostingClassifier()


grid = {

    'max_features': [0.8,'sqrt'],

    'subsample': [1, 0.7],

    'min_samples_split': [2, 3],

    'min_samples_leaf': [1, 3],

    'learning_rate': [0.01, 0.1],

    'max_depth': [3, 8, 15],

    'n_estimators': [10, 20, 50]

}


scorer = make_scorer(make_custom_score, needs_proba=True)

sampler = ParameterGrid(grid)

cv = KFold(5)


for params in sampler:

    for ix_train, ix_test in cv.split(X, y):

        clf_fitted = clone(clf).fit(X[ix_train], y[ix_train])

        score = scorer(clf_fitted, X[ix_test], y[ix_test])

        # do something with the results


查看完整回答
反对 回复 2021-08-17
  • 3 回答
  • 0 关注
  • 240 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信