从R中的插入符号机器学习模型中提取预测值

问题描述 投票:0回答:1

我是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)

现在,当我将模型输入该函数时,我确实获得了模型的实际值和预测值,但是由于没有可用的索引号,因此我不知道哪个值对应于原始数据集中的哪个记录。 。

第二,输入到函数中的模型仅包含训练集,而不包含测试集。我需要以组合正确的顺序提取训练和测试集的预测值,以进行比较。

这是我正在试图做的事情,还是我只是为星星拍摄?

我还提供了一些示例供您参考:

在数据集上实现线性SVM

    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")

将非常感谢您提供有关如何实现此目标的任何帮助或建议。

感谢您的建议。

r machine-learning r-caret
1个回答
0
投票

没有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.
© www.soinside.com 2019 - 2024. All rights reserved.