我已经创建了10个样本的培训数据集。我用这10个样本训练了随机森林模型。我想在测试集上测试这些模型并获得10个预测的dataset.However,当我想将预测的概率转换为yes/no类时,我只得到一个大的因素,而不是一个因素的列表。
# Training models
set.seed(111)
sample_num = 10
modelList<- vector("list", sample_num)
names(modelList)<-sprintf("model%s", seq(1:sample_num))
for(s in 1:sample_num){
trainingdata<-CVD_trainingSamples[[s]]
modelList[[s]] <- randomForest(death ~., data = trainingdata,
ntree = 500)
}
# Test the trained models on the control set
predictControl<-vector("list", sample_num)
names(predictControl)<-sprintf("prediction of model%s",
seq(1:sample_num))
for(s in 1:sample_num){
fitModel<-modelList[[s]]
predictControl[[s]]<- predict(fitModel, controlBatch, type =
"prob")[,2]
}
for(s in 1:training_num){
predClass_control <- vector("list", training_num)
predClass_control<-
as.factor(ifelse(predictControl[[s]]>0.5,1,0))
}predClass_control的结果是一个大的因子(9670个元素),而我希望它是一个长度为10的列表,每个元素包含9670个因素。
发布于 2022-11-07 17:33:52
(在1:training_num中){的代码的这一部分中
predClass_control <- vector("list", training_num)
predClass_control<-
as.factor(ifelse(predictControl[[s]]>0.5,1,0))
}您重新分配变量predClass_control,以便在for循环的每次迭代中删除它的值。
https://stackoverflow.com/questions/74350467
复制相似问题