将对象名称转换为R中列表中的字符串
我似乎找不到一个有效的答案,但本质上我正在循环我创建的模型,我的目标是输出准确度以及模型名称,如下所示:将对象名称转换为R中列表中的字符串,r,machine-learning,R,Machine Learning,我似乎找不到一个有效的答案,但本质上我正在循环我创建的模型,我的目标是输出准确度以及模型名称,如下所示: accuracy_data <- function(model_prediction,model_name){ confmat <- confusionMatrix(model_prediction, test_data$DEATH_EVENT) accuracy_results <- round(confmat$overall[["Acc
accuracy_data <- function(model_prediction,model_name){
confmat <- confusionMatrix(model_prediction, test_data$DEATH_EVENT)
accuracy_results <- round(confmat$overall[["Accuracy"]]*100, digits=2)
print(paste(model_name," - ",accuracy_results,"%",sep=""))
}
pred_list <- list(log_pred,knn_pred,svm_pred,non_svm_pred,tree_pred,rf_pred,gbm_pred,xgb_pred,nn_pred)
for(predic in pred_list){
accuracy_data(predic,"Model Name")
}
在每种情况下,我都找不到用模型名称替换“模型名称”的方法。有没有一个简单的方法可以做到这一点?使用pred_列表名称或其他方式
如有任何建议,将不胜感激。在询问之前,我确实在谷歌和这里搜索过,但没有成功
还有一个额外的问题——是否有办法将这些结果输出到某种表或数组中,而不是按原样输出?(如果这是一个单独的问题,很抱歉)我们可以使用
list(log\uu pred=log\u pred,…)创建名为的列表,或者使用dplyr::lst
或purrr::lst
pred_list <- dplyr::lst(log_pred, knn_pred, svm_pred, non_svm_pred, tree_pred,
rf_pred, gbm_pred, xgb_pred, nn_pred)
关于输出,它只是print
ing,即没有返回值。如果我们需要创建一个对象,那么在函数中我们可以更改打印
以返回输出
accuracy_data <- function(model_prediction,model_name){
confmat <- confusionMatrix(model_prediction, test_data$DEATH_EVENT)
accuracy_results <- round(confmat$overall[["Accuracy"]]*100, digits=2)
return(paste(model_name," - ",accuracy_results,"%",sep=""))
}
这完美地回答了我的问题。我还有一个问题(尽管我可以把它变成一个新问题)。如果我想实际使用模型的名称,例如“Logistic回归”,而不是模型对象名称中的“log_pred”,有没有简单的选项?像某种字典吗?@Jonas_Konig你能不能把它作为一个新问题发布。谢谢
for(nm in names(pred_list)){
accuracy_data(pred_list[[nm]], nm)
}
accuracy_data <- function(model_prediction,model_name){
confmat <- confusionMatrix(model_prediction, test_data$DEATH_EVENT)
accuracy_results <- round(confmat$overall[["Accuracy"]]*100, digits=2)
return(paste(model_name," - ",accuracy_results,"%",sep=""))
}
out <- c()
for(nm in names(pred_list)) {
out <- c(out, accuracy_data(pred_list[[nm]], nm))
}