我是stackoverflow的新手,所以对于出现的任何错误我都表示歉意。
我正在使用caret包在R中运行各种机器学习模型-逻辑回归,SVM,决策树,Boosted树,神经网络和K最近邻。
我使用插入符号是因为实现所有这些模型只是更改方法名称的问题。
[我想提取模型在训练和测试集上的谓词,其想法是将输出/因变量的这些谓词存储回数据集中,以便与实际值进行比较。
我研究并能够找到以下代码:
results<-extractPrediction(models, testX = NULL, testY = NULL, unkX = NULL, unkOnly = !is.null(unkX) & is.null(testX), verbose = FALSE)
其中模型是要提取结果的所有模型的列表。
首先,除非按以下方式执行,否则代码将引发错误,但现在暂时将其保留。
results<-extractPrediction(models)
现在,当我将模型输入该函数时,我确实获得了模型的实际值和预测值,但是由于没有可用的索引号,因此我不知道哪个值对应于原始数据集中的哪个记录。 。
第二,输入到函数中的模型仅包含训练集,而不包含测试集。我需要以组合正确的顺序提取训练和测试集的预测值,以进行比较。
这是我正在试图做的事情,还是我只是为星星拍摄?
我还提供了一些示例供您参考:
cl <- parallel::makeCluster(detectCores(logical=TRUE), type='PSOCK')
doParallel::registerDoParallel(cl)
start.time <- Sys.time()
trnControl <- trainControl(method='cv',number=5, allowParallel = T,verboseIter = T)
set.seed(11)
ds1lnrsvm <- train(shortflag~., data=trnds1,method="svmLinear",
trControl=trnControl)
ds1lnrsvm_t<- Sys.time() - start.time
parallel::stopCluster(cl)
registerDoSEQ()
## Implementing Linear SVM model on test dataset
ds1lnrsvmres <- predict(object=ds1lnrsvm, newdata=testds1)
## confusion matrix to check performance
confusionMatrix(data=ds1lnrsvmres, reference=testds1$shortflag,positive="1")
将非常感谢您提供有关如何实现此目标的任何帮助或建议。
感谢您的建议。
没有trnds1
/ testds1,
,我无法重现您的问题,但也许下面是您想要的。
library(dplyr)
pred <- extractPrediction(list(NAME = ds1lnrsvm), # extractPrediction neet list
testX = select(testds1, -shortflag),
testY = pull(testds1, shortflag))
trnds1 %>% # train data
bind_rows(testds1) %>% # bind_rows with testdata
bind_cols(pred) # %>% # add cols of predict
# select(-shortflag) # shortflg is the same as obs, if you want you delete the col.