除了预测类标签之外,在预测时是否可以返回新数据中每个观察值的期望值?
library(caret)
knnFit <- train(Species ~ ., data = iris, method = "knn",
trControl = trainControl(method = "cv", classProbs = TRUE))
x <- predict(knnFit, newdata = iris)
返回预测类的向量。
str(x)
Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 1 ...
如果我想要概率:
x <- predict(knnFit, newdata = iris, type = "prob")
> head(x)
setosa versicolor virginica
1 1 0 0
2 1 0 0
3 1 0 0
4 1 0 0
5 1 0 0
6 1 0 0
有没有可能让插入符号同时返回预测值和概率值?我知道我可以通过取概率值的max.col来计算,但我想知道是否有一种内置的方法可以同时获得两者?
2条答案
按热度按时间dwbf0jvd1#
我把我的评论变成了一个答案。一旦你生成了概率的预测表,你实际上不需要运行两次预测函数来获得类。你可以通过应用一个简单的
which.max
函数(在imo中运行得很快)来请求添加类列。这将为每行分配列的名称(三个c("setosa", "versicolor", "virginica")
中的一个),基于哪一个概率最高。您将获得此表,其中包含所要求的两个信息:
ps:这使用了
dplyr
或magrittr
包中的管道操作符。pdsfdshx2#
另一种解决方法: