如何解决使用 (caret) 训练 mlp 模型时出错
我用 caret 用这段代码训练了一个 mlp 模型。
library(datasets)
library(MASS)
library(caret)
DP = caret::createDataPartition(Boston$medv,p=0.75,list = F)
train = Boston[DP,]
test = Boston[-DP,]
colnames(train) = colnames(Boston)
colnames(test) = colnames(Boston)
mlp = caret::train(medv ~.,data = Boston,method = "mlp",trControl = trainControl(method = "cv",number = 3),tuneGrid = expand.grid(size = 1:3),linOut = T,metric = "RMSE")
Yp = caret::predict.train(mlp,test[,1:13])
我收到此错误消息:
In nominalTrainWorkflow(x = x,y = y,wts = weights,info = trainInfo,: There were missing values in resampled performance measures.
请伙计们,我需要了解为什么会出现此错误?
解决方法
某些运行的 R 平方值抛出 NA,您可以检查输出:
set.seed(111)
mlp = caret::train(medv ~.,data = Boston,method = "mlp",trControl = trainControl(method = "cv",number = 3),tuneGrid = expand.grid(size = 1:3),linOut = T,metric = "RMSE")
mlp$results
size RMSE Rsquared MAE RMSESD RsquaredSD MAESD
1 1 9.152376 NaN 6.640184 0.9213123 NA 0.6877405
2 2 14.353732 0.000965434 12.274448 8.3227673 NA 8.6994894
3 3 12.701064 NaN 10.988850 3.2658958 NA 3.6549478
请注意,即使对于有效的模型,您的 Rsquared 也太低了。模型有两个问题,1)你的规模可能太小,2)你没有缩放数据,所以你的预测只给你一个值,而 R2 完全是无稽之谈:
Yp = caret::predict.train(mlp,test[,1:13])
table(Yp)
Yp
20.0358009338379
125
尝试这样的事情:
mlp = caret::train(medv ~.,preProcess = c("center","scale"),tuneGrid = expand.grid(size = 3:5),metric = "RMSE")
mlp
Multi-Layer Perceptron
506 samples
13 predictor
Pre-processing: centered (13),scaled (13)
Resampling: Cross-Validated (3 fold)
Summary of sample sizes: 337,338,337
Resampling results across tuning parameters:
size RMSE Rsquared MAE
3 7.926669 0.3291762 5.619198
4 6.976707 0.4913297 5.130273
5 6.894459 0.5188481 5.040821
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。