Я новичок в настройке параметров с помощью пакета mlr. Недавно я попробовал это с алгоритмом xgboost в задаче двоичной классификации. Натренированной точности у меня не получилось, только NA. После раунда Google я не смог отладить свой код. Не могли бы вы дать мне несколько советов, пожалуйста?
Вот воспроизводимый пример с использованием данных mtcars в базе R:
library(mlr)
library(parallelMap)
mtcars
set.seed(1)
train.index=sample(nrow(mtcars),nrow(mtcars)*0.7)
train=mtcars[train.index,]
test=mtcars[-train.index,]
list(dim(train),dim(test))
# set the tuning
tune.dat=train[,c('mpg','cyl','disp','wt','vs','am')]
traintask=makeClassifTask(data=tune.dat,target='am')
learner=makeLearner('classif.xgboost',predict.type='response',nrounds=300,nthread=2)
prange=makeParamSet(
makeNumericParam('eta',lower=0.01,upper=0.3),
makeNumericParam('max_depth',lower=2,upper=10),
makeNumericParam('subsample',lower=0.4,upper=0.8),
makeNumericParam('colsample_bytree',lower=0.4,upper=0.8)
)
ctrl=makeTuneControlRandom(maxit=50)
rdesc=makeResampleDesc('CV',iters=4)
parallelStartMulticore(2)
# tune
mytune=tuneParams(learner=learner,task=traintask,par.set=prange,control=ctrl,resampling=rdesc)
mytune$y
результатом должно быть число, а не NA





Я нашел 2 проблемы с вашим кодом:
1) Поле «am» хочет быть фактором
tune.dat[, 'am'] <- as.factor(tune.dat[, 'am'])
2) Параметр max_depth должен быть целым числом
makeIntegerParam('max_depth', lower = 2, upper = 10),
С этими заменами выход
mmce.test.mean
0.225
Поскольку показатель производительности не указан, по умолчанию используется частота ошибок (mmce).
Также не забудьте отметить ответ как правильный, если вы считаете его таковым.
Большое спасибо за помощь, @grldsndrs. Просто продолжение, это mmce.test.mean точность или ошибка?