TL / DR ANSWER:在newdata
参数中指定训练数据。
如何使用caret
的{{1}}从训练有素的模型中持续提取类概率?目前,当使用公式表示法训练predict
的参数并且predict
指示变量被忽略时,我收到错误。
可以通过以下方式复制:
-variable
然后以下行将失败:
fit.lda <- train(Species ~ . -Petal.Length,
data = iris,
preProcess = c("center", "scale"),
trControl = trainControl(method = "repeatedcv",
number = 10,
repeats = 3,
classProbs = TRUE,
savePredictions = "final",
selectionFunction = "best",
summaryFunction = multiClassSummary),
method = "lda",
metric = "Mean_F1")
predict.lda(modelFit,newdata)出错:变量数量错误
如果predict(fit.lda, type = "prob")
公式中省略了-Petal.Length
,则没有错误。我在公式声明中做错了吗?
我想我可以深入了解模型的有没有办法获得{ {1}}按预期工作?train
槽并获取与类类型相对应的列(参见EDIT2),但这似乎是hackish。
=====的修改 =====
我使用pred
包中的predict
训练了许多不同的模型(使用公式表示法),在尝试使用caretList
时出现了各种错误:
caretEnsemble
knn3Train出错(train = c(....):'test'和'train'的差异
predict
:警告讯息: 方法$ prob(modelFit = modelFit,newdata = newdata,submodels = param): kernlab类概率计算失败;返回NAs
knn
:myFunc [[1]](x,...)中的错误: 输入数据列28的数量与输入神经元的数量20不匹配
无误的方法是svmRadial
和基于树的方法(mlpML
,nnet
)
=====的 EDIT2 =====
以下内容不会重复进行重新采样。选择的答案要简单得多。
这是一个从训练模型中提取概率的自行解决方案,但是对于标准化,我更喜欢是否可以让 rf
表现出来。
xgbTree
答案 0 :(得分:0)
只需使用newdata
参数即可使用
predict(fit.lda, newdata = iris, type = "prob")
<强> [EDITED] 强>
正如我们所看到的,对于lda
,预测结果是相同的:
library(MASS)
fit.lda <- lda(Species ~ . -Petal.Length, data = iris)
identical(predict(fit.lda), predict(fit.lda, newdata=iris))
# [1] TRUE
library(randomForest)
fit.rf <- randomForest(Species ~ . -Petal.Length, data = iris)
identical(predict(fit.rf), predict(fit.rf, newdata=iris))
# [1] FALSE