我正在使用xgboost并且我需要使用 if 陳述句和添加來重現其輸出。但是,我沒有得到正確的輸出。
讓我們創建隨機資料:
import numpy as np
import xgboost as xgb
import os
np.random.seed(42)
data = np.random.rand(100, 5)
label = np.random.randint(2, size=100)
dtrain = xgb.DMatrix(data, label=label)
然后創建一個基本模型:
param = {'max_depth': 2, 'eta': 1, 'objective': 'binary:logistic'}
num_round = 3
bst = xgb.train(param, dtrain, num_round)
現在我保存增強樹的規則:
savefile = 'dump.raw.txt'
bst.dump_model(savefile)
os.startfile(savefile)
這就是我得到的:
# booster[0]:
# 0:[f3<0.905868173] yes=1,no=2,missing=1
# 1:[f0<0.0309647173] yes=3,no=4,missing=3
# 3:leaf=0.5
# 4:leaf=-0.561797738
# 2:[f3<0.956529975] yes=5,no=6,missing=5
# 5:leaf=0.909090936
# 6:leaf=-0.5
# booster[1]:
# 0:[f2<0.863453388] yes=1,no=2,missing=1
# 1:[f2<0.71782589] yes=3,no=4,missing=3
# 3:leaf=-0.0658661202
# 4:leaf=1.03587329
# 2:[f0<0.345137954] yes=5,no=6,missing=5
# 5:leaf=0.0854885057
# 6:leaf=-1.15627134
# booster[2]:
# 0:[f2<0.46345675] yes=1,no=2,missing=1
# 1:[f2<0.18197903] yes=3,no=4,missing=3
# 3:leaf=-0.321362823
# 4:leaf=1.05848205
# 2:[f3<0.704104543] yes=5,no=6,missing=5
# 5:leaf=-0.623027325
# 6:leaf=0.46367079
我的測驗集是這樣的:
bst.predict(dtrain)[0]
array([0.37454012, 0.95071431, 0.73199394, 0.59865848, 0.15601864])
如果我總結分裂,我得到這個:
-0.5618 1.0358 - 0.6230 = -0.14899
它應該是 0.48283
如何獲得正確的輸出值?
uj5u.com熱心網友回復:
如何獲得正確的輸出值?
你似乎有一個二元分類問題進行處理(整數標簽0和1),因此您需要將應用雙曲線函式的提振得分。
更精確地重新計算:
import numpy
x = -0.561797738 1.03587329 -0.623027325
1. / (1. numpy.exp(-x))
.. 產量 0.46283075
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/368015.html
