python - XGBoost 预测输出不是二进制的?

标签 python machine-learning classification xgboost predict

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

最佳答案

改用XGBClassifier

像这样导入:

    from xgboost import XGBClassifier

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

关于python - XGBoost 预测输出不是二进制的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38060493/

相关文章:

python - 如何在 PySpark 中将数据框列从 String 类型更改为 Double 类型?

python - 通过带有 if 语句的函数对数据框中的数字执行操作

matlab - 使用 matlab 进行一维高斯贝叶斯分类

python - 矩阵转换为txt文件

opencv - 如何在自定义检测算法中使用级联分类器?

python - 有什么方法可以为每个蜘蛛使用单独的 scrapy 管道吗?

python - 在 Python 中解决看似(但实际上不是!)超定稀疏线性系统

python - 统一文本和图像分类 (Python)

machine-learning - 如何预处理此 float 据以与 scikit 一起使用 - 机器学习

machine-learning - 根据实体的属性对实体进行二元分类