xgboost項目實戰

import xgboost as xgb
start_time = time.time()
offline = 0
online = 0
params = {'booster': 'gbtree',
          'objective': 'rank:pairwise',
          'eval_metric': 'auc',
          'gamma': 0.1,
          'min_child_weight': 1.1,
          'max_depth': 7,
          'lambda': 10,
          'subsample': 0.7,
          'colsample_bytree': 0.7,
          'colsample_bylevel': 0.7,
          'eta': 0.01,
          'tree_method': 'exact',
          'seed': 1000,
          'nthread': 12
          }

params1 = {
    'booster': 'gbtree',
    'objective': 'binary:logistic',
    'scale_pos_weight': 1 / 7.5,
    # 7183正樣本
    # 55596條總樣本
    # 差不多1:7.7這樣子
    'gamma': 0.2,  # 用於控制是否後剪枝的參數,越大越保守,一般0.1、0.2這樣子。
    'max_depth': 8,  # 構建樹的深度,越大越容易過擬合
    'lambda': 3,  # 控制模型複雜度的權重值的L2正則化項參數,參數越大,模型越不容易過擬合。
    'subsample': 0.7,  # 隨機採樣訓練樣本
    # 'colsample_bytree':0.7, # 生成樹時進行的列採樣
    'min_child_weight': 3,
    # 這個參數默認是 1,是每個葉子裏面 h 的和至少是多少,對正負樣本不均衡時的 0-1 分類而言
    # ,假設 h 在 0.01 附近,min_child_weight 爲 1 意味着葉子節點中最少需要包含 100 個樣本。
    # 這個參數非常影響結果,控制葉子節點中二階導的和的最小值,該參數值越小,越容易 overfitting。
    'silent': 0,  # 設置成1則沒有運行信息輸出,最好是設置爲0.
    'eta': 0.03,  # 如同學習率
    'seed': 1000,
    'nthread': 12,  # cpu 線程數
    'eval_metric': 'auc'
}
train = tabel
plst = list(params.items())
num_rounds = 5000  # 迭代次數

y = train['標籤']
X = train.drop(['標籤', '用戶標識'], axis=1)
# X=train[feature_list]

xgb_train = xgb.DMatrix(X, label=y)
watchlist = [(xgb_train, 'train'),(xgb_train, 'val')]
print("跑到這裏了xgb.train")
# training model
# early_stopping_rounds 當設置的迭代次數較大時,early_stopping_rounds 可在一定的迭代次數內準確率沒有提升就停止訓練
model = xgb.train(plst, xgb_train, num_boost_round=7000, evals=watchlist, early_stopping_rounds=500)
print("跑到這裏了save_model")
model.save_model('20170201_B.model')  # 用於存儲訓練出的模型

 

發佈了222 篇原創文章 · 獲贊 47 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章