我已经使用XGBOOST进行多类别预测。
这是一个多标签预测问题。我的目标值包含8个类别,我使用了6个高度相关的特征。
我创建了我的预测数据集,并使用as.data.frame将其从矩阵转换为数据框。
我想检查我的预测准确性,但是由于列名更改且我的数据集中没有级别,所以不确定如何检查。我使用的所有数据类型都是整数和数值型的。
Response <- train$Response
label <- as.integer(train$Response)-1
train$Response <- NULL
train.index = sample(n,floor(0.75*n))
train.data = as.matrix(train[train.index,])
train.label = label[train.index]`
test.data = as.matrix(train[-train.index,])
test.label = label[-train.index]
View(train.label)
# Transform the two data sets into xgb.Matrix
xgb.train = xgb.DMatrix(data=train.data,label=train.label)
xgb.test = xgb.DMatrix(data=test.data,label=test.label)
params = list(
booster="gbtree",
eta=0.001,
max_depth=5,
gamma=3,
subsample=0.75,
colsample_bytree=1,
objective="multi:softprob",
eval_metric="mlogloss",
num_class=8)
xgb.fit <-xgb.train(
params=params,
data=xgb.train,
nrounds=10000,
nthreads=1,
early_stopping_rounds=10,
watchlist=list(val1=xgb.train,val2=xgb.test),
verbose=0
)
xgb.fit
xgb.pred = predict(xgb.fit,test.data,reshape = T)
class(xgb.pred)
xgb.pred = as.data.frame(xgb.pred)
"""
现在我得到了以下形式的预测概率,由于有8类,我有8个概率值。我不知道哪个概率值属于哪个变量。
1 0.12233257 0.07373134 0.044682350 0.0810693502 0.06272415 0.134308174 0.066143863 0.415008187
我希望您能够将它们转换为有意义的标签,但我无法做到。执行混淆矩阵时需要这样做。