郭震 AI公众号:郭震AI

18 贝叶斯分类之模型评估与改进

发布日期:

最近更新:

分类: 贝叶斯学习

预计阅读: 4 分钟

阅读次数: 0

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

整理说明

这篇内容怎么整理

郭震 · 2026-06-04

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

阅读路线

先按这条路线读

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

图文要点

先看本文图文节点

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

贝叶斯分类之模型评估与改进结构图查看大图
贝叶斯分类之模型评估与改进结构图

贝叶斯学习的重点是把已有判断和新证据合在一起,并明确表达不确定性。阅读时可以按「模型评估 -> 评估指标 -> 交叉验证 -> 混淆矩阵」建立结构,再回到正文里的代码、案例或指标做验证。

贝叶斯分类之模型评估与改进核对图查看大图
贝叶斯分类之模型评估与改进核对图

读完后,用一个真实小任务复查:输入是什么,处理环节在哪里,输出是否可验收;失败时先查「模型评估」,再查「评估指标」。

在上一篇中,我们探讨了“朴素贝叶斯分类器”的基本概念和实现方法。朴素贝叶斯分类器是一种基于贝叶斯定理的简单而有效的分类方法,尽管它在许多实际应用中表现良好,但模型的评估与改进却是确保其性能的关键步骤。本文将专注于如何评估和改进贝叶斯分类模型的表现。

模型评估

评估指标

贝叶斯分类评估改进判断卡查看大图
贝叶斯分类评估改进判断卡

评估和改进贝叶斯分类器时,先看混淆矩阵、类别先验、特征独立性、概率校准、错误样本和新特征。

在机器学习中,我们通常使用以下一些指标来评估模型的性能:

  1. 准确率(Accuracy): 正确预测的样本占总样本的比例。计算公式如下:

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

    其中:

    • TPTP (True Positive):真正例(正确地预测为正类的样本数)
    • TNTN (True Negative):真负例(正确地预测为负类的样本数)
    • FPFP (False Positive):假正例(错误地预测为正类的样本数)
    • FNFN (False Negative):假负例(错误地预测为负类的样本数)
  • 精确率(Precision): 正确预测的正例占所有预测为正例的比例。

    Precision=TPTP+FP\text{Precision} = \frac{TP}{TP + FP}
  • 召回率(Recall): 正确预测的正例占所有真实正例的比例。

    Recall=TPTP+FN\text{Recall} = \frac{TP}{TP + FN}
  • F1-score: 精确率和召回率的调和平均数,是对模型性能综合考虑的一个指标。

    F1=2PrecisionRecallPrecision+RecallF1 = 2 \cdot \frac{\text{Precision} \cdot \text{Recall}}{\text{Precision} + \text{Recall}}
  • 交叉验证

    使用交叉验证可以更可靠地评估模型的性能。常用的K折交叉验证将数据集分成K个子集,然后进行K次训练和测试,每次使用一个子集作为测试集,其他作为训练集。

    from sklearn.model_selection import cross_val_score
    from sklearn.naive_bayes import GaussianNB
    from sklearn.datasets import load_iris
    
    # 加载数据
    data = load_iris()
    X = data.data
    y = data.target
    
    # 创建模型
    model = GaussianNB()
    
    # 交叉验证
    scores = cross_val_score(model, X, y, cv=5)
    print(f'Cross-validation scores: {scores}')
    print(f'Mean accuracy: {scores.mean()}')
    

    混淆矩阵

    混淆矩阵是可视化模型预测结果的一种方法,可以帮助我们更直观地了解模型的性能。

    from sklearn.metrics import confusion_matrix
    import seaborn as sns
    import matplotlib.pyplot as plt
    
    # 训练模型
    model.fit(X_train, y_train)
    y_pred = model.predict(X_test)
    
    # 生成混淆矩阵
    cm = confusion_matrix(y_test, y_pred)
    
    # 可视化混淆矩阵
    sns.heatmap(cm, annot=True, fmt='d', cmap='Blues', 
                xticklabels=data.target_names, 
                yticklabels=data.target_names)
    plt.ylabel('Actual')
    plt.xlabel('Predicted')
    plt.title('Confusion Matrix')
    plt.show()
    

    模型改进

    数据预处理

    贝叶斯学习阅读地图卡查看大图
    贝叶斯学习阅读地图卡

    阅读《贝叶斯分类之模型评估与改进》前,可以先用配图确认主线;读完后再检查哪些步骤能直接操作,哪些还需要补资料。

    在改进模型之前,首先需要确保数据质量。进行特征选择、特征工程、数据清洗和归一化等预处理步骤能够显著提升模型性能。

    超参数优化

    朴素贝叶斯分类器虽然简单,但其性能在一定程度上受限于参数的选择。通过网格搜索(Grid Search)或随机搜索(Random Search)的方法,可以找到分布参数的最佳值。

    from sklearn.model_selection import GridSearchCV
    
    # 网格搜索参数
    param_grid = {'var_smoothing': [1e-9, 1e-8, 1e-7, 1e-6]}
    grid = GridSearchCV(GaussianNB(), param_grid, cv=5)
    grid.fit(X_train, y_train)
    
    # 输出最佳参数
    print(f'Best parameters: {grid.best_params_}')
    

    集成学习

    集成方法(如Bagging和Boosting)可以通过结合多个模型,改善分类性能。例如,使用随机森林或AdaBoost等集成技术,通常可以显著提升分类效果。

    from sklearn.ensemble import RandomForestClassifier
    
    # 创建随机森林分类模型
    rf_model = RandomForestClassifier(n_estimators=100)
    rf_model.fit(X_train, y_train)
    
    # 评估模型
    rf_score = rf_model.score(X_test, y_test)
    print(f'Random Forest Accuracy: {rf_score}')
    
    贝叶斯分类之模型评估与改进应用复盘卡查看大图
    贝叶斯分类之模型评估与改进应用复盘卡

    学完《贝叶斯分类之模型评估与改进》后,不妨换一个自己的场景试一次,重点观察输入、处理和输出是否能对应起来。

    贝叶斯分类之模型评估与改进应用检查卡查看大图
    贝叶斯分类之模型评估与改进应用检查卡

    如果想把《贝叶斯分类之模型评估与改进》用到自己的任务里,可以先缩小场景,只验证一个最关键的判断点。

    结论

    在本篇中,我们讨论了如何评估和改进贝叶斯分类模型的性能。这包括使用适当的评估指标、通过交叉验证确保结果的可靠性、采用混淆矩阵分析模型的预测结果,以及通过数据预处理、超参数优化、和集成学习等方法来提升模型的性能。这些步骤和技巧将为我们后续将要讨论的“马尔可夫链蒙特卡洛方法之MCMC方法的基础”奠定坚实的基础。

    继续阅读

    从这篇继续找到相关教程

    AI 教程总索引

    常见问题

    读前先确认这三点

    贝叶斯分类之模型评估与改进适合谁读?

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

    读这篇贝叶斯学习入门教程要多久?

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

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

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

    分享文章

    转发到常用平台

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

    相关教程

    AI 教程总索引

    继续阅读

    继续找到相关 AI 教程

    返回栏目

    Reader Messages

    读者留言

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

    最多 800 字

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

    0/800

    留言列表

    0
    正在加载留言...