插入符号模型的系统时间

时间:2019-08-13 10:06:46

标签: benchmarking r-caret

trainData为包含7个特征和1个分类变量Species的预处理数据框。

类似这样的东西:

                 PC1      PC2       PC3        PC4         PC5       PC6      PC7 Species
2003107130 0.8301089 1.443945 -2.185632 -0.8639386 -0.68081852 -1.208709 2.647994       n
2003107230 1.0170479 1.657239 -2.285227 -1.0172219 -0.50421995 -1.600949 2.870363       p
2003107330 0.9495682 1.648479 -2.086089 -0.8139318 -0.11193939 -1.528083 3.079773       n
2003107431 1.1837268 1.858587 -2.251805 -0.9985537 -0.09134958 -1.885080 3.238982       v
2003108101 1.0260958 1.757180 -1.922329 -0.6288886  0.35198089 -1.560086 3.446924       n
2003108104 0.8222981 1.614413 -1.540175 -0.2019360  0.81462685 -1.159013 3.632512       n
...

({Species是3个级别的因子:npv)。

我想尝试比较all 238 models软件包提供的caret,以获取训练它们并将其存储在数据框中所需的时间。 caret需要许多其他软件包,其中某些甚至不适用于当前的R版本。而且,某些模型并非旨在处理分类问题。因此,tryCatch()似乎是最好的解决方案。但是,我面临着怪异的等待时间,即使下班后会议也仍然停滞不前。这是我的尝试:

library(caret)
library(foreach)

  benchmarks <- foreach(method = paste(names(getModelInfo())), .combine = rbind) %do%
  {
    message(paste('Benchmarking', method, '...'))
    tryCatch(
      expr = {

        bmk <- system.time(model <- train(Species ~ ., data = trainData, method = method))
        message(paste('>>> Method', method, 'benchmarked', bmk[3], 'seconds'))
        return(cbind.data.frame(method, bmk[3]))

      },
      error = function(e)
      {
        message('Something went wrong with the model...')
        message(paste('>>>', e))

      },
      finally = {}
    )
  }

出于可重复性目的,您可以使用任何分类数据框,例如Iris数据集。

您能否获得238个型号的基准?如果是这样,使用什么代码?

0 个答案:

没有答案