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