我正在尝试使用R插入符模块进行模型生成,我想使用一些交叉验证功能。我发现唯一与rpart
一起使用的交叉验证函数是LOOCV
(留下一个交叉验证)。
以下代码抛出错误:
library(cart)
data(trees)
formula=Volume~Girth+Height
train(formula, data=trees, method='rpart')
警告消息:在nominalTrainWorkflow中(dat = trainData,info = trainInfo,method = method,:缺少值 重新采样的绩效指标。
这个错误意味着什么,如何让它消失?我在互联网上搜索,而不是一次点击此错误消息。我将错误追溯到rpart
模型生成。它以某种方式输出此错误消息,所有其他模式生成方法工作正常!
如果我使用LOOCV
,一切正常。
我将警告追溯到workflows.R文件,但我不明白为什么会抛出此警告。
> sessionInfo()
R version 2.15.0 (2012-03-30)
Platform: x86_64-pc-linux-gnu (64-bit)
locale:
[1] LC_CTYPE=en_GB.UTF-8 LC_NUMERIC=C
[3] LC_TIME=en_GB.UTF-8 LC_COLLATE=en_GB.UTF-8
[5] LC_MONETARY=en_GB.UTF-8 LC_MESSAGES=en_GB.UTF-8
[7] LC_PAPER=C LC_NAME=C
[9] LC_ADDRESS=C LC_TELEPHONE=C
[11] LC_MEASUREMENT=en_GB.UTF-8 LC_IDENTIFICATION=C
attached base packages:
[1] parallel stats graphics grDevices utils datasets methods
[8] base
other attached packages:
[1] earth_3.2-3 plotrix_3.4 plotmo_1.3-1
[4] leaps_2.9 doMC_1.2.5 multicore_0.1-7
[7] iterators_1.0.6 forecast_3.20 RcppArmadillo_0.3.0.2
[10] Rcpp_0.9.10 fracdiff_1.4-1 tseries_0.10-28
[13] zoo_1.7-7 quadprog_1.5-4 caret_5.15-023
[16] foreach_1.4.0 cluster_1.14.2 reshape_0.8.4
[19] plyr_1.7.1 lattice_0.20-6 mda_0.4-2
[22] class_7.3-3 rpart_3.1-52 data.table_1.8.0
loaded via a namespace (and not attached):
[1] codetools_0.2-8 compiler_2.15.0 grid_2.15.0
答案 0 :(得分:9)
使用R邮件列表和caret
作者的帮助,我找到了以下解决方案:
如果由于某种原因生成的模型是常量,则会发生错误。常量意味着在这种情况下,对于所有输入值,模型总是产生相同的值。在这种情况下,R ^ 2的计算失败。插入符默认计算R ^ 2。由于插入符号不使用R ^ 2值进行模型选择,因此可以跳过此错误。
还有两个问题:
caret
中的代码将明显失败。我将R ^ 2计算替换为没有这些限制的自写计算。简而言之:您可以忽略警告,如果需要,请编写自己的R ^ 2来修复警告。