郭震 AI公众号:郭震AI

18 模型比较

发布日期:

最近更新:

分类: Scikit

预计阅读: 4 分钟

阅读次数: 0

系列进度

Scikit-learn 入门 · 第 18 / 24

预计阅读4 分钟
结构重点7 个
图文要点6 张
正文规模1.6k 字

整理说明

这篇内容怎么整理

郭震 · 2026-06-04

独立整理围绕 7 个结构重点拆成环境、步骤、验证点和常见误区,尽量让读者能照着复现。
图文对照保留 6 张和配置、流程、判断结果有关的图片,方便快速定位正文重点。
持续校对工具、模型和命令变化较快,后续优先修正入口、参数和风险提醒。

阅读路线

先按这条路线读

先抓住主线,再回到代码、配置和图文细节,读起来会更稳。

图文要点

先看本文图文节点

按图先建立主线,再跳回正文核对步骤、配置和判断标准。

模型比较流程图查看大图
模型比较流程图

模型比较最怕流程不公平。不同模型必须在相同数据划分、相同预处理和相同指标下比较,否则结论很容易偏。

模型比较核对图查看大图
模型比较核对图

我会把模型比较写成一个表:模型、参数、平均分、波动、训练时间、备注。只看最高分不够。

在数据科学的工作中,模型评估和比较是非常重要的一步。通过有效的评估和比较,我们可以选择出最优的模型,从而提高预测的准确性。继上节的交叉验证介绍后,本节将专注于如何比较不同的机器学习模型。

1. 模型比较的基本概念

在机器学习中,我们常常会训练多个模型来解决同一个任务。为了选择最适合的数据模型,我们需要对这些模型的性能进行比较。通常,我们会利用一些评价指标来量化模型的表现,如准确率精确率召回率F1分数等。

Scikit-Learn模型比较判断卡查看大图
ScikitLearn模型比较判断卡

比较 Scikit-Learn 模型时,先统一预处理、训练验证拆分、指标、交叉验证、训练成本和解释需求。

1.1 评价指标

常用的评价指标包括:

  • 准确率 (Accuracy): 正确预测的样本数与总样本数之比。

    Accuracy=TP+TNTP+TN+FP+FN\text{Accuracy} = \frac{TP + TN}{TP + TN + FP + FN}

  • 精确率 (Precision): 正确预测的正样本数与被预测为正样本的总数之比。

    Precision=TPTP+FP\text{Precision} = \frac{TP}{TP + FP}

  • 召回率 (Recall): 正确预测的正样本数与实际正样本的总数之比。

    Recall=TPTP+FN\text{Recall} = \frac{TP}{TP + FN}

  • F1分数 (F1 Score): 精确率和召回率的调和平均数,用于衡量模型的综合性能。

    F1=2×Precision×RecallPrecision+RecallF1 = 2 \times \frac{\text{Precision} \times \text{Recall}}{\text{Precision} + \text{Recall}}

  • 在使用这些评价指标时,我们需要根据具体应用场景选择合适的指标。

    2. 通过交叉验证进行模型比较

    在上节中,我们介绍了交叉验证的概念,它提供了一种评估模型性能的有效方法。通过交叉验证,我们可以降低模型评估的方差,并获得更稳健的性能估计。

    Scikit-Learn阅读地图卡查看大图
    ScikitLearn阅读地图卡

    学《模型比较》时,可以先找一个自己能复现的小场景,再看相关概念和练习步骤,读完后用自己的例子复述一遍。

    2.1 示例:比较不同分类模型

    假设我们有一个分类任务,并且我们想比较三个不同的分类模型:逻辑回归决策树随机森林。下面是如何使用scikit-learn进行模型比较的步骤:

    import numpy as np
    from sklearn.datasets import load_iris
    from sklearn.model_selection import train_test_split, cross_val_score
    from sklearn.linear_model import LogisticRegression
    from sklearn.tree import DecisionTreeClassifier
    from sklearn.ensemble import RandomForestClassifier
    
    # 加载数据
    iris = load_iris()
    X = iris.data
    y = iris.target
    
    # 划分数据
    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
    
    # 创建模型
    models = {
        'Logistic Regression': LogisticRegression(max_iter=200),
        'Decision Tree': DecisionTreeClassifier(),
        'Random Forest': RandomForestClassifier()
    }
    
    # 评估模型
    results = {}
    for model_name, model in models.items():
        scores = cross_val_score(model, X_train, y_train, cv=5, scoring='accuracy')
        results[model_name] = scores
    
    # 输出比较结果
    for model_name, scores in results.items():
        print(f"{model_name}: 平均准确率 = {np.mean(scores):.3f} ± {np.std(scores):.3f}")
    

    在上述代码中,我们首先加载了Iris数据集,并将其分为训练集和测试集。接着,我们定义了三种分类模型,并用交叉验证评估了它们的准确率。最后,我们输出了每个模型的平均准确率及其标准差,以便于进行比较。

    3. 基于可视化的模型比较

    在模型比较中,可视化是一个强有力的工具。我们可以使用matplotlib库绘制出不同模型的性能图,从而更直观地理解各个模型的表现。

    3.1 绘制模型性能图

    下面是如何绘制模型比较的条形图的示例:

    import matplotlib.pyplot as plt
    
    # 绘制条形图
    model_names = results.keys()
    mean_scores = [np.mean(scores) for scores in results.values()]
    std_scores = [np.std(scores) for scores in results.values()]
    
    plt.bar(model_names, mean_scores, yerr=std_scores, capsize=5)
    plt.xlabel('模型')
    plt.ylabel('平均准确率')
    plt.title('模型比较')
    plt.ylim(0.0, 1.0)
    plt.show()
    

    在这个图中,条形的高度表示模型的平均准确率,而误差线则表示准确率的标准差。通过这种方式,我们可以一目了然地看到不同模型的性能差异。

    模型比较应用复盘卡查看大图
    模型比较应用复盘卡

    学完《模型比较》后,不妨换一个自己的场景试一次,重点观察输入、处理和输出是否能对应起来。

    模型比较应用检查卡查看大图
    模型比较应用检查卡

    如果想把《模型比较》用到自己的任务里,可以先缩小场景,只验证一个最关键的判断点。

    4. 总结

    模型比较是机器学习中必不可少的一部分。通过交叉验证和可视化工具,我们可以有效地评估和选择最佳模型。接下来的章节将继续探讨超参数调优,进一步提高我们模型的性能。在选择模型和进行超参数调优时,了解模型之间的比较是非常重要的,这样可以确保我们不会错过最优的解决方案。

    继续阅读

    从这篇继续找到相关教程

    AI 教程总索引

    常见问题

    读前先确认这三点

    模型比较适合谁读?

    这是 Scikit-learn 入门 系列第 18 / 24 篇,适合正在学习Scikit-learn 入门,并且需要把概念落到操作步骤或判断标准里的读者。

    读这篇Scikit-learn 入门教程要多久?

    按中文技术文章阅读速度估算,通读大约 4 分钟;如果要跟着复现,建议把命令、配置和结果检查分开做。

    这篇文章里的图文节点怎么用?

    正文里有 6 个图文节点,可以先用它们抓住流程、配置和判断点,再回到对应段落细读。

    分享文章

    转发到常用平台

    微信/朋友圈可先复制链接

    相关教程

    AI 教程总索引

    继续阅读

    继续找到相关 AI 教程

    返回栏目

    Reader Messages

    读者留言

    有问题、补充资料或实测结果,可以直接留下。这里不需要登录。

    最多 800 字

    为了防刷,每条留言会做长度、链接数量和提交频率限制。

    0/800

    留言列表

    0
    正在加载留言...