1. 程式人生 > >機器學習 scikit-learn4 模型實踐 - xgboost 和 lightgbm

機器學習 scikit-learn4 模型實踐 - xgboost 和 lightgbm

xgboost 和 lightgbm - 目錄

1 簡介

1.1 程式碼下載

程式碼路徑,歡迎 star~~
https://github.com/spareribs/kaggleSpareribs/blob/master/Overdue/ml/code/sklearn_config.py


https://github.com/spareribs/kaggleSpareribs/blob/master/Overdue/ml/code/sklearn_train.py

1.2 程式碼使用方法

  1. 【必須】config.py 設定檔案存放的路徑
  2. 【必須】先執行 features 中的 base.py 先把資料處理好 [PS:需要根據實際情況修改]
  3. 【可選】再通過 code 中的 sklearn_config.py 設定模型的引數[PS: 按需修改]
  4. 【必須】最後通過 code 中的 sklearn_train.py 訓練模型輸出結果

3 核心程式碼說明

3.1 模型配置

""" 開啟交叉驗證 """
status_vali = False
""" 模型引數 """
clfs = {
	'xgb': xgb.XGBClassifier(),
	'lgb': lgb.LGBMClassifier(),
}

3.2 模型訓練

可以修改模型的選擇 [ xgb, lgb ]

""" 1 讀取資料 """
data_fp = open(features_path, 'rb')
x_train, y_train = pickle.load(data_fp)
data_fp.close()

""" 2 訓練分類器, clf_name選擇需要的分類器 """
clf_name = "xgb" clf = clfs[clf_name] clf.fit(x_train, y_train) """ 3 在驗證集上評估模型 """ if status_vali: print("測試模型 & 模型引數如下:\n{0}".format(clf)) print("=" * 20) pre_train = clf.predict(x_train) print("訓練集正確率: {0:.4f}".format(clf.score(x_train, y_train))) print("訓練集f1分數: {0:.4f}".format(f1_score(y_train, pre_train))) print("訓練集auc分數: {0:.4f}".format(roc_auc_score(y_train, pre_train))) print("-" * 20) pre_vali = clf.predict(x_vali) print("測試集正確率: {0:.4f}".format(clf.score(x_vali, y_vali))) print("測試集f1分數: {0:.4f}".format(f1_score(y_vali, pre_vali))) print("測試集auc分數: {0:.4f}".format(roc_auc_score(y_vali, pre_vali))) print("=" * 20)

3.3 輸出結果

3.3.1 xgb

測試模型 & 模型引數如下:
XGBClassifier(base_score=0.5, booster='gbtree', colsample_bylevel=1,
       colsample_bytree=1, gamma=0, learning_rate=0.1, max_delta_step=0,
       max_depth=3, min_child_weight=1, missing=None, n_estimators=100,
       n_jobs=1, nthread=None, objective='binary:logistic', random_state=0,
       reg_alpha=0, reg_lambda=1, scale_pos_weight=1, seed=None,
       silent=True, subsample=1)
====================
訓練集正確率: 0.8515
訓練集f1分數: 0.6141
訓練集auc分數: 0.7259
--------------------
測試集正確率: 0.7898
測試集f1分數: 0.4545
測試集auc分數: 0.6429
====================

3.3.2 lgb

測試模型 & 模型引數如下:
LGBMClassifier(boosting_type='gbdt', class_weight=None, colsample_bytree=1.0,
        importance_type='split', learning_rate=0.1, max_bin=255,
        max_depth=-1, min_child_samples=20, min_child_weight=0.001,
        min_split_gain=0.0, n_estimators=250, n_jobs=-1, num_leaves=31,
        objective=None, random_state=None, reg_alpha=0.0, reg_lambda=0.5,
        silent=True, subsample=1.0, subsample_for_bin=200000,
        subsample_freq=1)
====================
訓練集正確率: 1.0000
訓練集f1分數: 1.0000
訓練集auc分數: 1.0000
--------------------
測試集正確率: 0.7821
測試集f1分數: 0.4738
測試集auc分數: 0.6509
====================