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

如何定义函数以计算线性回归、随机森林与伯努利模型的准确率、精确率、召回率及F1值

如何将多模型的分类指标计算封装为可复用函数?

这个需求太实用了!把重复的指标计算逻辑封装成函数,能省不少重复写代码的功夫,我来给你捋捋怎么实现:

第一步:封装可复用的评估函数

我们可以把指标计算的逻辑打包成一个函数,它接收训练好的分类器、测试集特征和测试集标签作为输入,自动完成预测和指标计算,还能把结果打印出来或者返回给你后续使用:

from sklearn.metrics import accuracy_score, f1_score, precision_score, recall_score

def evaluate_classifier(classifier, X_test, y_test, average='macro'):
    # 生成模型的预测结果
    y_pred = classifier.predict(X_test)
    
    # 计算各项分类指标
    accuracy = accuracy_score(y_test, y_pred)
    precision = precision_score(y_test, y_pred, average=average)
    recall = recall_score(y_test, y_pred, average=average)
    f1 = f1_score(y_test, y_pred, average=average)
    
    # 格式化打印指标结果,看起来更清晰
    print(f"准确率(Accuracy): {accuracy:.4f}")
    print(f"精确率(Precision): {precision:.4f}")
    print(f"召回率(Recall): {recall:.4f}")
    print(f"F1值(F1 Score): {f1:.4f}")
    
    # 返回指标字典,方便后续分析、保存或进一步处理
    return {
        'accuracy': accuracy,
        'precision': precision,
        'recall': recall,
        'f1': f1
    }

第二步:调用函数评估不同模型

假设你已经训练好了三个模型(比如linear_clf、rf_clf、bernoulli_clf,这里注意:如果是线性回归(回归任务),你提到的这些分类指标是不适用的,可能你实际想使用的是逻辑回归分类器?),只需要分别调用这个函数就能快速得到评估结果:

# 评估线性分类模型(比如逻辑回归)
print("=== 线性分类模型评估结果 ===")
linear_metrics = evaluate_classifier(linear_clf, X_test, y_test)

# 评估随机森林模型
print("\n=== 随机森林模型评估结果 ===")
rf_metrics = evaluate_classifier(rf_clf, X_test, y_test)

# 评估伯努利模型
print("\n=== 伯努利模型评估结果 ===")
bernoulli_metrics = evaluate_classifier(bernoulli_clf, X_test, y_test)

一些额外的小提示

  • 关于average参数:如果是二分类任务,你可以把它改成average='binary';多分类任务中,'macro'是对各类指标取算术平均,'weighted'会考虑各类样本的数量权重,你可以根据需求调整。
  • 如果不需要返回指标,只需要打印的话,可以删掉return语句。
  • 要是需要把结果保存到文件,还可以在函数里加上写入文件的逻辑,让它更灵活。

内容的提问来源于stack exchange,提问作者Ann-Sophie Biderbost

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 19:43:12