r语言 - 使用for循环计算多个数据帧的AUC



对于某个问题,我想在多个数据集上执行随机森林分类器,并比较所述数据集的AUC。我想使用一种"懒惰"的方法,所以我想使用for循环来代替对多个数据集进行n次分类。

因此,for循环在多个数据集上循环,执行随机森林分类,计算AUC并将该AUC存储在空矩阵/数据帧中。结果应该是一个表/矩阵,它向我显示每个数据集的一列和显示每个数据集的AUC的一行。

我准备了一些使用Iris数据集的代码来开始,但是没有在这类问题上使用for循环的任何经验。希望有人能帮助我,甚至让我在正确的方向思考!?

的例子:

require(pROC)
require(randomForest)
#use the Iris dataset as example
data(iris)
#make a simple 2-class outcome over the Iris dataset
iris <- iris[-which(iris$Species=="setosa"),]
iris$Species<-as.factor(as.character(iris$Species))
#create list of dataframes we want to use
df1 <- iris
df2 <- iris
df_list <- list(df1, df2)
#create empty matrix to store results in
results_matrix <- matrix(ncol=2, nrow=1)
#create a for loop to calculate and store AUC of each dataframe 
for(df in df_list){
rf_model <- randomForest::randomForest(Species ~., data = df)
rf_model_roc <- roc(iris$Species,rf_model$votes[,2])
df_auc <- auc(rf_model_roc)

#store df_auc of each df in results_matrix
}

您可以创建一个vector来存储来自AUC的值。

例如,

#create list of dataframes we want to use
df1 <- iris
df2 <- iris
df_list <- list(df1, df2)
results_vec <- numeric(length(df_list))
#create a for loop to calculate and store AUC of each dataframe 
for(i in seq_along(df_list)) {
data <- df_list[[i]]
rf_model <- randomForest::randomForest(Species ~., data = data)
rf_model_roc <- roc(data$Species,rf_model$votes[,2])
results_vec[i] <- as.numeric(auc(rf_model_roc))
}
results_vec

最新更新