我正在尝试运行一个非常简单的示例,其中XGBoost获取一些数据并进行二进制分类。 documentation表示xgboost在使用“binary:logistic”时输出概率
import numpy as np
import xgboost as xgb
data = np.random.rand(7,10)
label = np.random.randint(2,size=7)
#print data
#print label
dtrain = xgb.DMatrix(data, label=label)
param = {'bst:max_depth':2, 'bst:eta':1, 'silent':1, 'objective':'binary:logistic' }
plst = param.items()
bst = xgb.train(plst,dtrain,)
dtest= xgb.DMatrix(np.random.rand(4,10))
ypred = bst.predict(dtest)
print ypred
输出结果为:
[ 0.31350434 0.31350434 0.31350434 0.31350434]
那么这个输出意味着什么?这是否意味着我有31%的机会获得1?
如何将其翻译为0,1?
这question似乎有关系,但我无法从中得到任何有用的东西。
答案 0 :(得分:1)
要将概率转换为结果或类(0或1),您可以使用阈值,如上所述(它不一定必须是0.5)。问题在于找到决策边界,你可以看到一个很好的高级解释here。
答案 1 :(得分:0)
是的,它是获得1的概率。要将其作为二进制值,只需检查它是大于还是小于0.5。
答案 2 :(得分:0)
代替这样做:
import xgboost as xgb
您只需要这样做:
from xgboost import XGBClassifier
调用预测e输出为0或1