从最佳的R Caret模型中提取获胜的RMSE

3
我使用caret包创建nnet模型,并使用以下代码提取预测值:

我使用caret包创建nnet模型,并使用以下代码提取预测值:

nnet<-predict(my_model, newdata = my_new_data) 
nnet
[1] -0.1468207

我还创建了以下输出,以便我可以查看最优模型参数,如下所示:
Resampling results across tuning parameters:

  size  decay  RMSE        Rsquared   RMSE SD      Rsquared SD
  10    0.001  0.01867841  0.4789708  0.002538599  0.12778927 
  10    0.100  0.02349088  0.1233067  0.001859455  0.10188046 
  12    0.001  0.01826047  0.5059824  0.002630588  0.12962511 
  12    0.100  0.02348553  0.1238252  0.001890646  0.09851303 
  15    0.001  0.01795350  0.5289120  0.003021449  0.13908835 
  15    0.100  0.02318972  0.1429446  0.001932714  0.11156927 

RMSE was used to select the optimal model using  the smallest value.
The final values used for the model were size = 15 and decay = 0.001.

我的问题是如何创建一个仅包含最终模型的最优RMSE值的变量?(而不是手动检查输出。)

例如,以下是类似的内容:

Model_RMSE<-nnet$finalModelRMSE
Model_RMSE
[1] 0.01795350

谢谢你

*更新 感谢 @SamThomas,那就是它了。 我实际上只想从“获胜/最佳”使用的模型中获取RMSE,因此我只需在下面的建议中包装一个min()。

>nnet$results["RMSE"]
        RMSE
1 0.01867841
2 0.02349088
3 0.01826047
4 0.02348553
5 0.01795350
6 0.02318972

>min(nnet$results["RMSE"])
[1] 0.0179535

2
nnet$results["RMSE"] 怎么样?如果不行的话,提供一个可重现的例子会很有帮助(而且在任何情况下都是个好习惯)。 - Whitebeard
非常感谢Sam Thomas。已更新如上所述。也注意到了可重现示例的问题。 - user3740289
2个回答

7

已经有一个函数可以做这件事,它叫做getTrainPerf

马克斯


太好了,谢谢Max。> getTrainPerf(nnetFit) TrainRMSE TrainRsquared method 1 0.01749052 0.5415966 nnet - user3740289

0
很高兴这条评论有所帮助。如果你想要结果中的完整行,这可能会有用。
nnet$results[which.min(nnet$results[, "RMSE"]), ]

看起来很有用,但我无法让它工作:'> nnet$results[which.min(nnet$results["RMSE"]), ] which.min(nnet$results["RMSE"]) 出错: (list) 对象无法强制转换为 'double' 类型 - user3740289
抱歉,我编辑了一下,如果你有兴趣可以再试一次。nnet$results是一个数据框。因此,nnet$results[, "RMSE"]应该返回名为RMSE的列。 - Whitebeard
谢谢,这给了我 [1] 0.01817819 0.02303919 0.01784826 0.02292240 0.01749456 0.02260340。我只需要最低的值,但知道其他值也很好。 - user3740289

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接