Poniższa funkcja przewidywania podaje również wartości -ve, więc nie może to być prawdopodobieństwo.
param <- list(max.depth = 5, eta = 0.01, objective="binary:logistic",subsample=0.9)
bst <- xgboost(param, data = x_mat, label = y_mat,nround = 3000)
pred_s <- predict(bst, x_mat_s2)
I google i próbowałem, pred_s <- predict(bst, x_mat_s2,type="response")
ale to nie działało.
Pytanie
Jak zamiast tego przewidzieć prawdopodobieństwa?
machine-learning
r
predictive-modeling
decision-trees
GeorgeOfTheRF
źródło
źródło
outputmargin=F
dopredict
funkcji? Jeśli w jakiś sposóboutputmargin
jest ustawiony naT
, zwróci wartość przed transformacją logistyczną.predict_proba
implementację zsklearn
interfejsu API: github.com/dmlc/xgboost/blob/master/python-package/xgboost/…Odpowiedzi:
Wiedz, że jestem trochę spóźniony, ale aby uzyskać od
xgboost
ciebie prawdopodobieństwa , powinieneś określićmulti:softmax
cel w następujący sposób:Z
?xgb.train
:źródło
Po prostu użyj
predict_proba
zamiastpredict
. Możesz zostawić cel jakobinary:logistic
.źródło
po prognozie
możesz uzyskać prawdopodobieństwo przez
Jeśli jest to klasyfikacja binarna, wówczas
pred_s$data
obejmuje prob.0, prob.1, odpowiedź.Możesz dostać prob.1 przez
źródło