簡體   English   中英

XGBoost 預測輸出不是二進制的?

[英]XGBoost predictions output not binary?

我正在嘗試運行一個非常簡單的示例,其中 XGBoost 獲取一些數據並進行二進制分類。 文檔說 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?

這個問題似乎相關,但我無法從中得到任何有用的東西。

是的,就是得到 1 的概率。要得到它作為二進制值,只需檢查它是否大於或小於 0.5。

要將概率轉換為結果或類別(0 或 1),您可以使用閾值,如上所述(不一定必須為 0.5)。 問題在於找到一個決策邊界,你可以在這里看到一個很好的高級解釋。

請改用XGBClassifier

像這樣導入它:

    from xgboost import XGBClassifier

這將返回 0 或 1 作為其預測的 int,而不是 0 和 1 之間的浮點數。

用這個:

predictions = [round(value) for value in ypred]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM