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

在Scikit-Learn中多次训练分类器以获取指标平均值

多次训练分类器获取稳定指标平均值的实现

我发现每次训练分类器时,*false positive rate(假阳性率)和false negative rate(假阴性率)*这类指标的结果总是存在波动。为了得到更可靠的评估结果,我打算通过重复训练100次分类器,然后计算各项指标的平均值来降低随机性的影响。

下面是我写的相关代码片段(包含后续计算平均值的部分):

import numpy as np

print('Executing Logistic Regression')
all_fpr = []
all_tpr = []
all_roc_auc = []
all_acc = []
all_recall = []

# 重复训练100次
for i in range(0, 100):
    # 调用自定义方法获取当前训练的各项指标
    lr_values = lrRocAucTest.execute(X_train, y_train, X_test, y_test)
    all_fpr.append(lr_values['fpr'])
    all_tpr.append(lr_values['tpr'])
    all_roc_auc.append(lr_values['roc_auc'])
    all_acc.append(lr_values['acc'])
    all_recall.append(lr_values['recall'])

# 计算各项指标的平均值
mean_fpr = np.mean(all_fpr, axis=0)
mean_tpr = np.mean(all_tpr, axis=0)
mean_roc_auc = np.mean(all_roc_auc)
mean_acc = np.mean(all_acc)
mean_recall = np.mean(all_recall)

# 输出平均结果
print(f"Mean False Positive Rate: {mean_fpr}")
print(f"Mean True Positive Rate: {mean_tpr}")
print(f"Mean ROC AUC: {mean_roc_auc}")
print(f"Mean Accuracy: {mean_acc}")
print(f"Mean Recall: {mean_recall}")

代码说明:

  • 首先初始化多个列表,用来存储100次训练中每一次的指标结果;
  • 通过for循环执行100次分类器训练,每次调用lrRocAucTest.execute()获取当前训练的假阳性率(fpr)、真阳性率(tpr)、ROC AUC、准确率(acc)和召回率(recall),并添加到对应列表中;
  • 循环结束后,使用numpy的mean()函数计算每个指标的平均值,这样就能得到消除单次训练随机性后的稳定指标结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:49:59