对于SKLearn中的常规Grad Boost决策树分类器,model.predict_proba(X)[:,0]
与model.decision_function(X)
相比得到的结果不同,所以我知道这不一样。
我想要模特的分数。绘制ROC曲线等。如何使用SKLearn包装器获取XGBoost分类器的决策功能?为什么predict_proba与分数不同?
答案 0 :(得分:0)
一般情况下,我不希望library(dplyr)
df <- data_frame(a = c(NA, 1, NA, 1, 1), b = c(1, NA, 1, 1, NA))
df %>%
transmute_all(funs(ifelse(. == 1, deparse(substitute(.)), NA)))
#> # A tibble: 5 x 2
#> a b
#> <chr> <chr>
#> 1 <NA> b
#> 2 a <NA>
#> 3 <NA> b
#> 4 a b
#> 5 a <NA>
和sklearn.GradientBoostingClassifier
同意,因为那些使用非常不同的实现。但是,您尝试比较的数量之间也存在概念差异:
为什么predict_proba与分数不同?
概率(xgboost.XGBClassifier
的输出)是从应用损失/目标函数的分数(model.predict_proba(X)
的输出)中获得的,请参阅How can I detect when a new element has been added to the document in jquery?和here for the call to the loss function。
我想要模特的分数。绘制ROC曲线等。如何使用SKLearn包装器获取XGBoost分类器的决策函数?
对于ROC曲线,您需要使用model.decision_function(X)
,即与类xgbmodel.predict_proba(X)[:,1]
对应的第二列。