allModelsResults
的每个元素?意思是,例如
allModelsResults$'1'
给我对象的第一个元素。接下来allModelsResults$'2'
将是第二个元素。我想创建一个for循环来提取每个元素,运行一些命令并存储结果。详细说明如下...
我有以下代码,使用“knn”在多个模型规范中运行简单的ML模型。 模型规范存储在
allModelList
中,所有结果都存储在allModelsResults
中。所有模型列表中的单个模型如下:
y ~ x1 + x2 + x3
或者
y ~ x1 + x5 + x4
等等,简而言之,模型规格的一系列组合
allModelsResults <- lapply(allModelsList, function(x) train(x, data=All_categories_merged_done,method = "knn"))
我现在希望能够逐个提取每个元素(每个模型的结果)以进行分析。例如,我可以手动选择:
allModelsResults$'1'
来获取第一个模型的结果,或者 allModelsResults$'5'
来获取第五个模型的结果等等。理想情况下,我希望能够通过循环逐个选择这些元素,并运行一系列命令。
请帮忙提供有关如何从 allModelsResults 对象中提取元素的任何帮助! 我有大约50个模型规范,因此我需要创建一个循环或类似的东西来自动逐个提取。
具体来说,为了与社区分享,对于每个元素,我都想逐个执行此操作,针对每个模型。
这里是一个示例,我正在提取模型1(这显然不起作用):
aggregate_results <- NULL
for(z in 1:length(categories)){
element_number_ID <- (element_number[z])
element_number_ID
应该等于 '1'
才能提取正确的模型。
model_1_result <- allModelsResults$'1'
ResultsTestPred <- predict(model_1_result, testing_data)
results_to_store <- confusionMatrix(ResultsTestPred, testing_data $outcome)
aggregate_results <- rbind(aggregate_results, results_to_store)
}
results_to_store
的一个元素的输出如下:
混淆矩阵和统计信息
Reference
预测 0 1 0 14 2 1 4 19
Accuracy : 0.8462
95% CI : (0.6947, 0.9414)
No Information Rate : 0.5385
P-Value [Acc > NIR] : 0.00005274
Kappa : 0.688
Mcnemar的检验P值:0.6831
Sensitivity : 0.7778
Specificity : 0.9048
Pos Pred Value : 0.8750
Neg Pred Value : 0.8261
Prevalence : 0.4615
Detection Rate : 0.3590
检测普遍性:0.4103 平衡准确率:0.8413
'Positive' Class : 0
我希望为每个元素/模型保存
准确性
值,这样我就可以比较不同模型的规格以确定其准确性。感谢您提供的任何见解!
*apply
的形式来处理它,例如:lapply(allModelsResults, predict, testing_data)
。 - Rui Barradasresults_to_store
中? - Peter Alexandersapply
。它将返回一个向量、矩阵或类似的对象,这些对象以整洁的格式易于进一步处理。否则,我会使用lapply
并将提取的内容保存在列表中。 - Rui Barradas[[
而不是$
来访问列表元素。这种方法对于变量也是有效的。allModelResults[[1]]
表示第一个元素,如果i = 3
,则allModelResults[[i]]
表示第三个元素。 - Gregor Thomaslapply
函数始终返回一个列表,不需要称其为“lapply对象”,它只是一个列表。 - Gregor Thomas