You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python多分类模型循环输出结果如何按accuracy_score降序排序

实现方法

只需调整运行逻辑:先暂存所有模型的评估结果,全部计算完成后按accuracy得分降序排列,再统一输出即可。

具体改动点

  • 新增结果存储列表model_results,替换原循环中的即时打印逻辑,将模型名称、accuracy得分、交叉验证结果统一存入列表
  • 所有模型训练评估完成后,调用Python内置sorted()方法,指定按accuracy得分降序排列
  • 遍历排序后的结果列表完成打印

修改后完整代码

# 原有导入保留即可,无需重复导入
from sklearn.metrics import accuracy_score
from sklearn.ensemble import RandomForestClassifier, GradientBoostingClassifier
from sklearn.naive_bayes import GaussianNB
from sklearn.svm import SVC
from sklearn.tree import DecisionTreeClassifier
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import KFold, cross_val_score

# 创建模型列表
models = []
models.append(("随机森林",RandomForestClassifier(n_estimators = 100, random_state = 0)))
#models.append(("逻辑回归",LogisticRegression()))
models.append(("朴素贝叶斯",GaussianNB()))
models.append(("支持向量机",SVC()))
models.append(("决策树",DecisionTreeClassifier()))
models.append(("K近邻",KNeighborsClassifier()))
models.append(("梯度提升树",GradientBoostingClassifier()))

# 存储所有模型评估结果
model_results = []

# 训练评估所有模型
for name, model in models:
    model.fit(X_train, y_train)
    y_pred = model.predict(X_test)
    kfold = KFold(n_splits=4)
    cv_result = cross_val_score(model, X_train, y_train, cv = kfold, scoring = "accuracy")
    acc = accuracy_score(y_test, y_pred)
    model_results.append( (name, acc, cv_result) )

# 按accuracy得分降序排序
sorted_results = sorted(model_results, key=lambda x: x[1], reverse=True)

# 打印排序后的结果
for name, acc, cv_result in sorted_results:
    print('\033[1m', name, '\033[0m')
    print('accuracy score is: \033[1m', acc,'\033[0m')
    print('cross validation score is: ' ,cv_result,'\n' + '-'*100)

可选调整

如果需要按交叉验证的平均得分排序,只需修改排序逻辑的key参数即可:

sorted_results = sorted(model_results, key=lambda x: x[2].mean(), reverse=True)

内容的提问来源于stack exchange,提问作者Stefano Puccini

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 01:06:01