【问题标题】:XGBoost predictions output not binary?XGBoost 预测输出不是二进制的?
【发布时间】:2016-06-27 18:10:28
【问题描述】:

我正在尝试运行一个非常简单的示例,其中 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 似乎相关,但我无法从中得到任何有用的东西。

【问题讨论】:

    标签: python machine-learning classification xgboost predict


    【解决方案1】:

    要将概率转换为结果或类别(0 或 1),您可以使用上面建议的阈值(不一定必须为 0.5)。问题在于找到一个Decision Boundary,可以看一个很好的高层解释here

    【讨论】:

      【解决方案2】:

      是的,就是得到1的概率。要得到它作为二进制值,只需检查它是否大于或小于0.5。

      【讨论】:

        【解决方案3】:

        请改用XGBClassifier

        像这样导入:

            from xgboost import XGBClassifier
        

        这将返回 0 或 1 作为其预测的 int,而不是 0 和 1 之间的浮点数。

        【讨论】:

          猜你喜欢
          • 2019-07-21
          • 1970-01-01
          • 2023-03-29
          • 1970-01-01
          • 2016-06-20
          • 2021-05-17
          • 2018-05-25
          • 1970-01-01
          • 2022-12-22
          相关资源
          最近更新 更多