【问题标题】:How to manually assign hyperparameter to LGBM如何手动将超参数分配给 LGBM
【发布时间】:2020-01-07 20:15:19
【问题描述】:
model = lightgbm.LGBMClassifier()  
hyperparameter_dictionary = {'boosting_type': 'goss',   'num_leaves': 25, 'n_estimators': 184, ...}  

如何通过字典分配模型的超参数,以便我可以使用这些超参数来尝试模型的行为?

谢谢!

【问题讨论】:

    标签: python machine-learning scikit-learn hyperparameters lightgbm


    【解决方案1】:

    将超参数字典传递给模型构造函数,将 ** 添加到 dict 以像 kwarg 参数一样传递每个 dict 项,因为 lgbm 根据 https://lightgbm.readthedocs.io/en/latest/pythonapi/lightgbm.LGBMClassifier.html#lightgbm.LGBMClassifier 期望它:

    hyperparameter_dictionary = {'boosting_type': 'goss', 'num_leaves': 25, 'n_estimators': 184}
    model = lightgbm.LGBMClassifier(**hyperparameter_dictionary)
    

    测试:

    print(model)
    
    LGBMClassifier(boosting_type='goss', ... n_estimators=184, n_jobs=-1, num_leaves=25,...)
    

    【讨论】:

    • 感谢您的回复。但这对我不起作用。即使它没有给出错误,该模型也不正确。我认为问题在于字典中的超参数名称是str类型。
    • 太棒了!感谢您的帮助!
    【解决方案2】:

    sklearn BaseEstimator 接口提供get_paramsset_params 用于获取和设置估计器的超参数。 LightGBM 是兼容的,因此您可以执行以下操作:

    model = lightgbm.LGBMClassifier()  
    hyperparameter_dictionary = {'boosting_type': 'goss',   'num_leaves': 25, 'n_estimators': 184}  
    model.set_params(**hyperparameter_dictionary)
    

    【讨论】:

    • 这也是对的。我认为我错过的一点是**感谢您的帮助!
    猜你喜欢
    • 2020-12-03
    • 1970-01-01
    • 2019-12-03
    • 2013-06-04
    • 2023-03-10
    • 1970-01-01
    • 2021-11-15
    • 2023-01-16
    • 1970-01-01
    相关资源
    最近更新 更多