lightGBMt和GridSearchCV调参代码

Posted hellobigorange

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了lightGBMt和GridSearchCV调参代码相关的知识,希望对你有一定的参考价值。

def train(x_train, y_train, X_test, y_test, systemCode):
    """XGB"""
    my_cv = TimeSeriesSplit(n_splits=5).split(x_train)

    eval_set = [(X_test, y_test)]
    cv_params = {'n_estimators':range(20,200,10),"max_depth":range(1,10,1),'num_leaves':range(10,100,5)}

    params = {
        #"boosting": "rf",
        # "num_boost_round":100,# 迭代次数
        'max_depth': 7,
        'n_estimators': 200,  # 基分类器个数
        'num_leaves': 10,  # 叶子节点数,由于lightGBM是leaves_wise生长,官方说法是要小于2^max_depth
        'learning_rate': 0.1,  # 学习速率
        'feature_fraction': 1,  # 建树的特征选择比例
        'bagging_fraction': 0.7,  # 建树的样本采样比例
    }
    model = lgb.LGBMRegressor(**params)
    optimized_GBM = GridSearchCV(estimator=model, param_grid=cv_params, scoring='neg_mean_absolute_error', cv=my_cv,
                                 n_jobs=6)
    # eval_metric输出每一轮的训练情况
    # early_stopping_rounds = 10 mae在10轮训练中没有提升,则停止
    optimized_GBM.fit(np.array(x_train), np.array(y_train), eval_metric='mae',
                      eval_set=[(np.array(x_train), np.array(y_train)), (np.array(X_test), np.array(y_test))],
                      early_stopping_rounds=100)
    # optimized_GBM.fit(np.array(x_train), np.array(y_train))
    model = optimized_GBM.best_estimator_
    print('参数的最佳取值:{0}'.format(optimized_GBM.best_params_))
    print('最佳模型得分:{0}'.format(optimized_GBM.best_score_))

    # model.fit(x_train, y_train, verbose=False)
    # plot_importance(model)
    # print(model)
    return model

以上是关于lightGBMt和GridSearchCV调参代码的主要内容,如果未能解决你的问题,请参考以下文章

机器学习系列调参GridsearchCV随机森林GBDTLightGBM和XGBoost调参顺序,外加一些加速调参的小技巧(主要介绍坐标下降)

XGBoost模型调参:GridSearchCV方法网格搜索优化参数

GridSearchCV调参

sklearn学习8-----GridSearchCV(自动调参)

【zt】LogisticRegression 调参 & GridSearchCV

时间序列——GridSearchCV&TimeSeriesSplit的调参(xgboost预测sin(x))