如何在不修改变量名的情况下将多组准确率值存入列表?
如何在不修改变量名的前提下收集多模型准确率数据
你需要在保留每个Accuracy变量名的前提下,将KNN、决策树等多个模型返回的准确率值收集到Accuracy_Data列表中。现有代码的问题在于最后尝试循环最后一个Accuracy值来添加,这不仅逻辑错误(若Accuracy是单个数值会引发迭代错误),也没收集到前面所有模型的结果。
修改后的代码
Accuracy_Data = list() # KNN模型 Accuracy = KNN(features_train, features_test, label_train, label_test) print("KNN algorithm:", str(Accuracy * 100),"%") Accuracy_Data.append(Accuracy) # 收集当前准确率 # 决策树模型 Accuracy = DecisionTree(features_train, features_test, label_train, label_test) print("Decision Tree:", f"{Accuracy * 100:.2f}%") Accuracy_Data.append(Accuracy) # 收集当前准确率 # SVM模型 Accuracy = SVM(features_train, features_test, label_train, label_test) print("The accuracy of SVM algorithm is", f"{Accuracy * 100:.2f}%") Accuracy_Data.append(Accuracy) # 高斯朴素贝叶斯模型 Accuracy = GNB(features_train, features_test, label_train, label_test) print("The accuracy of Gaussian Naive Bayes is", f"{Accuracy * 100:.2f}%") Accuracy_Data.append(Accuracy) # 随机森林模型 Accuracy = RFC(features_train, features_test, label_train, label_test) print("The accuracy of Random Forest is", f"{Accuracy * 100:.2f}%") Accuracy_Data.append(Accuracy) # AdaBoost分类器模型 Accuracy = ADC(features_train, features_test, label_train, label_test) print("The accuracy of Ada Boost Classifier is", f"{Accuracy * 100:.2f}%") Accuracy_Data.append(Accuracy)
关键说明
- 核心逻辑:在每个模型计算出
Accuracy值后,立即调用Accuracy_Data.append(Accuracy),这样就能在不修改Accuracy变量名的前提下,逐个收集所有模型的准确率结果。 - 修正格式化错误:原代码中
str(Accuracy * 100,"%")是错误的Python语法,改用f-string格式化(f"{Accuracy * 100:.2f}%")可以更简洁准确地输出带百分比的准确率,还能控制小数位数(这里保留2位小数)。 - 删除无效循环:原代码最后
for x in Accuracy:的循环完全错误,因为Accuracy是单个数值时无法迭代,直接删除即可。
内容的提问来源于stack exchange,提问作者nitin kashyap
相关产品推荐
相关产品推荐

