[英]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.