我正在尝试使用R插入符模块进行模型生成,我想使用一些交叉验证功能.我发现唯一合作的交叉验证函数rpart是LOOCV(留下一个交叉验证).
以下代码抛出错误:
library(cart)
data(trees)
formula=Volume~Girth+Height
train(formula, data=trees, method='rpart')
Run Code Online (Sandbox Code Playgroud)
警告消息:在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
Run Code Online (Sandbox Code Playgroud)
使用R Mailinglist和caret作者的帮助,我找到了以下解决方案:
如果由于某种原因生成的模型是恒定的,则会发生错误.常量意味着在这种情况下,对于所有输入值,模型总是产生相同的值.在这种情况下,R ^ 2的计算失败.插入符默认计算R ^ 2.由于插入符号不使用R ^ 2值进行模型选择,因此可以跳过此错误.
还有两个问题:
caret如果模型预测中没有至少两个不同的值,则代码明显失败.我将R ^ 2计算替换为没有这些限制的自写计算.简而言之:您可以忽略警告,如果需要,可以编写自己的R ^ 2来修复警告.