В пакете mlr я могу выполнить кластеризацию. Допустим, я не хочу знать, как модель работает с невидимыми данными, но я просто хочу знать, какое количество кластеров является наилучшим в отношении данного показателя производительности.
В этом примере я использую набор данных moons из пакета dbscan.
library(mlr)
library(dbscan)
data("moons")
db_task = makeClusterTask(data = moons)
db = makeLearner("cluster.dbscan")
ps = makeParamSet(makeDiscreteParam("eps", values = seq(0.1, 1, by = 0.1)),
makeIntegerParam("MinPts", lower = 1, upper = 5))
ctrl = makeTuneControlGrid()
rdesc = makeResampleDesc("CV", iters = 3) # I don´t want to use it, but I have to
res = tuneParams(db,
task = db_task,
control = ctrl,
measures = silhouette,
resampling = rdesc,
par.set = ps)
#> [Tune] Started tuning learner cluster.dbscan for parameter set:
#> Type len Def Constr Req Tunable
#> eps discrete - - 0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1 - TRUE
#> MinPts integer - - 1 to 5 - TRUE
#> Trafo
#> eps -
#> MinPts -
#> With control class: TuneControlGrid
#> Imputation value: Inf
#> [Tune-x] 1: eps=0.1; MinPts=1
#> Error in matrix(nrow = k, ncol = ncol(x)): invalid 'nrow' value (too large or NA)
Создано в 2019-06-06 пакетом Представления (v0.3.0)
Однако, млр заставляет меня использовать стратегию пересчета. Есть идеи, как использовать mlr в задачах кластера без пересэмплирования?