小編之前在機器學習算法XGBoost原理和實踐(上)這篇文章中已經講了xgboost的基本原理,不了解的可以點擊查看,這篇文章將介紹xgboost的實踐,涉及數據的讀取、數據模型訓練、模型保存、模型加載等全部流程,後續文章會介紹特徵工程的一下東西,歡迎關注。
XGBoost可以加載多種數據格式的訓練數據:
libsvm 格式的文本數據;
dtrain1 = xgb.DMatrix('train.svm.txt')Numpy 的二維數組;
data = np.random.rand(5,10) # 5 entities, each contains 10 featureslabel = np.random.randint(2, size=5) # binary targetdtrain = xgb.DMatrix( data, label=label)XGBoost 的二進位的緩存文件。加載的數據存儲在對象 DMatrix 中
dtrain2 = xgb.DMatrix('train.svm.buffer')參數設置
XGBoost使用key-value字典的方式存儲參數:
params = {'booster': 'gbtree','objective': 'multi:softmax', # 多分類的問題'num_class': 10, # 類別數'gamma': 0.1, # 用於控制是否後剪枝的參數,越大越保守,一般0.1、0.2這樣子。'max_depth': 12, # 構建樹的深度,越大越容易過擬合'lambda': 2, # 控制模型複雜度的權重值的L2正則化項參數,參數越大,模型越不容易過擬合。'subsample': 0.7, # 隨機採樣訓練樣本'colsample_bytree': 0.7, # 生成樹時進行的列採樣'min_child_weight': 3,'silent': 1, # 設置成1則沒有運行信息輸出,最好是設置為0.'eta': 0.007, # 如同學習率'seed': 1000,'nthread': 4, # cpu 線程數}模型整體流程如下
# 劃分訓練集和驗證集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)xg_train = xgb.DMatrix(X_train, label=y_train)xg_test = xgb.DMatrix(X_test, label=y_test)watchlist = [(xg_train, 'train'), (xg_test, 'test')]# 訓練xgboost模型
bst = xgb.train(params, xg_train, 60, watchlist, early_stopping_rounds=15)# 預測標籤
pred = bst.predict(xg_test)# 列印正確率
acc = (y_test == pred).mean()print('accuracy', acc)# 將標籤轉換為原標籤
pred = [lbl.inverse_transform(int(x)) for x in pred]保存模型
bst.save_model('test.model')
加載模型
通過如下方式可以加載模型:
bst = xgb.Booster({'nthread':4}) # init model
bst.load_model("model.bin") # load data
算法的流程就全部介紹了,如果感覺文章不錯,可以關注公眾好,也可以收藏和轉載!