LGBMClassifier


1、引入头文件

from lightgbm.sklearn import LGBMClassifier
from sklearn.model_selection import cross_val_score, train_test_split, GridSearchCV
from sklearn.metrics import mean_absolute_error,  make_scorer, accuracy_score

2、创建分类器

lgbm_clf = LGBMClassifier(
    # **params
        random_state=626, 
        n_estimators=800,
        learning_rate=0.1,
        max_depth = -1,
        num_leaves = 127,
        colsample_bytree = 0.8, 
        subsample = 0.8,
        lambda_l1= 0.1,   # 0.1
        lambda_l2=0.2,  # 0.2
        device='gpu', 
        # gpu_platform_id=1, 
        gpu_device_id=0
    )

3、贝叶斯调参

from bayes_opt import BayesianOptimization

#定义优化参数
def rf_cv(max_depth, subsample,num_leaves,colsample_bytree):
    val = cross_val_score(LGBMClassifier(
                        n_estimators=300,
                        learning_rate= 0.1,
                        max_depth = int(max_depth),
                        subsample = min(subsample,0.999),
                        num_leaves = int(num_leaves),
                        colsample_bytree = min(colsample_bytree,0.99), 
                        # lambda_l1= 0.1,   # 0.1
                        # lambda_l2=0.2,  # 0.2
                        random_state = 626,
                        device='gpu', 
                        #gpu_platform_id=1, 
                        gpu_device_id=0,),
            train_x,train_y,scoring="accuracy",cv=5).mean()
    return val
#贝叶斯优化
rf_bo = BayesianOptimization(rf_cv,
                             {
                                #  "n_estimators":(100,300),
                                #  'learning_rate':(0.08,0.2),
                                 "colsample_bytree":(0.7,0.9),
                                 "subsample":(0.7,0.9),
                                 "max_depth":(5,11),
                                 'num_leaves':(31,150),
                                # 'lambda_l1':(0.1,0.3),
                                # 'lambda_l2':(0.1,0.3),
                             })
#开始优化

print(LGB_BO.max['params'])
 num_iter = 25
 init_points = 4
 rf_bo.maximize(init_points=init_points,n_iter=num_iter)
#显示优化结果 rf_bo.res["max"]

4、验证结果

lgb_clf=LGBMClassifier(
                    n_jobs=-1,
                    device_type='gpu',
                    n_estimators=400,
                    learning_rate=0.1,
                    max_depth=5,
                    num_leaves=31,
                    colsample_bytree=0.51,
                    subsample=0.6,
                    # max_bins=127,
                )

scores = cross_val_score(lgb_clf, X=train_x, y=train_y, verbose=1, cv = 5, scoring=make_scorer(accuracy_score), n_jobs=-1)
scores.mean()

5、拟合预测

x_train,x_test,y_train, y_test =train_test_split(train_x,train_y,test_size=0.2,random_state=20)

lgb_clf.fit(x_train,y_train)
pred=lgb_clf.predict(x_test)
print("lgb_clf:",np.mean(pred==y_test))

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM