我正在将XGBoost算法与R配合使用。我知道参数 objective ='multi:softprob'会返回每个类中预测值的概率。
此外,我也想输入模型的标签作为概率。我正在搜索,但没有找到任何东西。有人知道这是否可能吗?
这是我必须尝试的代码:
#Create Random data
X <- data.frame(replicate(2,sample(0:1,6,rep=TRUE)))
X$X1 <- as.numeric(X$X1)
X$X2 <- as.numeric(X$X2)
Y1 = matrix(c(1,1,0,1,0,1),nrow=6, ncol=1)
Y2 = matrix(c(0.1,0.9,0.1,0.9,0.9,0.1,0.1,0.9,0.9,0.1,0.1,0.9),nrow=6, ncol=2)
#First model
xgb1 <- xgboost(data = data.matrix(X),
label = Y1,
eta = 0.1,
max_depth = 15,
nround=25,
subsample = 0.5,
colsample_bytree = 0.5,
seed = 1,
eval_metric = "merror",
objective = "multi:softprob",
num_class = 2,
nthread = 3
)
predict(xgb1, data.matrix(X[1,]))
#Desired model
xgb <- xgboost(data = data.matrix(X),
label = Y2,
eta = 0.1,
max_depth = 15,
nround=25,
subsample = 0.5,
colsample_bytree = 0.5,
seed = 1,
eval_metric = "merror",
objective = "multi:softprob",
num_class = 2,
nthread = 3
)
第一个模型是我习惯的模型,第二个模型是我想要的模型。唯一的区别是标签格式,但我不知道第二种选择是否可行。
谢谢!