单特征高斯朴素贝叶斯原理详解与Python实现摘要本文以“每周观影时长”为单特征通过固定模拟数据详细讲解高斯朴素贝叶斯的核心原理先验概率、似然、乘法逻辑、高斯分布的作用并使用Python实现两类人群高斯分布的可视化直观展示算法逻辑。目录问题引入核心逻辑模拟数据集关键概念详解Python实现与可视化总结1. 问题引入假设仅通过“每周观影时长”这一个连续特征判断一个人更可能是“互联网程序员”还是“在校大学生”。由于两类人群的观影时长存在重叠无法凭直觉直接判断需通过高斯朴素贝叶斯计算概率进行分类。2. 核心逻辑高斯朴素贝叶斯的核心是逐个假设样本属于某一类别计算“属于该类别 具备当前特征”的联合概率先验×似然选择联合概率最大的类别作为预测结果。3. 模拟数据集本文使用固定模拟数据范围明确便于讲解类别人数每周观影时长均值μ\muμ每周观影时长方差σ2\sigma^2σ2互联网程序员703.51.0在校大学生305.81.3待预测样本特征值x4.2x 4.2x4.2小时。4. 关键概念详解4.1 先验概率先验概率仅由类别在训练集中的占比决定与特征完全无关反映类别本身的“基础比例”。计算公式P(类别)该类别样本数总样本数 P(类别) \frac{该类别样本数}{总样本数}P(类别)总样本数该类别样本数​代入数据计算程序员先验P(程序员)701000.7 P(程序员) \frac{70}{100} 0.7P(程序员)10070​0.7大学生先验P(大学生)301000.3 P(大学生) \frac{30}{100} 0.3P(大学生)10030​0.34.2 似然似然表示“固定类别前提下当前特征值出现的相对概率”。对于连续特征如观影时长无法直接统计单点概率因此使用**高斯分布正态分布**拟合特征分布用特征值在高斯曲线上的高度近似似然值。条件概率形式P(特征∣类别) P(特征|类别)P(特征∣类别)4.3 乘法逻辑联合概率需要“属于该类别”和“具备该特征”两个独立事件同时发生因此概率为两者乘积P(类别且特征)P(类别)×P(特征∣类别) P(类别且特征) P(类别) \times P(特征|类别)P(类别且特征)P(类别)×P(特征∣类别)4.4 高斯分布的作用高斯分布的形状由两个参数唯一确定均值μ\muμ决定曲线中心位置反映该类特征的平均水平方差σ2\sigma^2σ2决定曲线胖瘦反映数据的分散程度σ2\sigma^2σ2越大曲线越宽数据越分散。通过训练集计算每类的μ\muμ和σ2\sigma^2σ2即可确定该类的高斯分布曲线用于估算连续特征的似然值。5. Python实现与可视化以下代码实现两类人群高斯分布的可视化直观展示待预测点4.2小时在两条曲线上的位置即似然值。importnumpyasnpimportmatplotlib.pyplotasplt# 解决中文乱码plt.rcParams[font.sans-serif][SimHei]plt.rcParams[axes.unicode_minus]False# 定义高斯分布概率密度函数defgaussian(x,mu,sigma_sq):return(1/np.sqrt(2*np.pi*sigma_sq))*np.exp(-(x-mu)**2/(2*sigma_sq))# 模拟数据集参数mu_programmer3.5# 程序员观影时长均值sigma_sq_programmer1.0# 程序员观影时长方差mu_student5.8# 大学生观影时长均值sigma_sq_student1.3# 大学生观影时长方差x_pred4.2# 待预测样本特征值# 生成x轴数据观影时长范围xnp.linspace(0,10,500)# 计算两类的高斯分布y值y_programmergaussian(x,mu_programmer,sigma_sq_programmer)y_studentgaussian(x,mu_student,sigma_sq_student)# 计算待预测点的似然值曲线高度y_pred_programmergaussian(x_pred,mu_programmer,sigma_sq_programmer)y_pred_studentgaussian(x_pred,mu_student,sigma_sq_student)# 绘图设置plt.figure(figsize(10,6))plt.plot(x,y_programmer,label程序员 (μ3.5, σ²1.0),color#1f77b4,linewidth2)plt.plot(x,y_student,label大学生 (μ5.8, σ²1.3),color#ff7f0e,linewidth2)# 标注待预测点plt.scatter(x_pred,y_pred_programmer,color#1f77b4,s100,zorder5)plt.scatter(x_pred,y_pred_student,color#ff7f0e,s100,zorder5)plt.vlines(x_pred,0,max(y_pred_programmer,y_pred_student),linestyles--,colorgray,alpha0.7)plt.text(x_pred0.1,y_pred_programmer,f似然(程序员){y_pred_programmer:.3f},color#1f77b4)plt.text(x_pred0.1,y_pred_student,f似然(大学生){y_pred_student:.3f},color#ff7f0e)# 标注均值位置plt.axvline(mu_programmer,color#1f77b4,linestyle:,alpha0.5,label程序员均值)plt.axvline(mu_student,color#ff7f0e,linestyle:,alpha0.5,label大学生均值)# 图表美化plt.xlabel(每周观影时长小时,fontsize12)plt.ylabel(概率密度似然近似值,fontsize12)plt.title(单特征高斯朴素贝叶斯两类人群观影时长分布,fontsize14)plt.legend(fontsize10)plt.grid(alpha0.3)plt.xlim(0,10)plt.ylim(0,0.5)plt.show()可视化结果说明运行代码后将生成高斯分布曲线蓝色曲线程序员观影时长分布中心在3.5小时橙色曲线大学生观影时长分布中心在5.8小时灰色虚线待预测点4.2小时的位置散点及文字4.2小时在两条曲线上的高度即似然值。结合先验概率程序员0.7大学生0.3可计算联合概率程序员联合概率0.7×似然(程序员) 0.7 \times 似然(程序员)0.7×似然(程序员)大学生联合概率0.3×似然(大学生) 0.3 \times 似然(大学生)0.3×似然(大学生)最终选择联合概率更大的类别作为预测结果。6. 总结高斯朴素贝叶斯的核心逻辑可概括为先验概率仅看类别基础占比与特征无关似然固定类别用高斯分布拟合连续特征估算特征出现的相对概率乘法逻辑联合概率为“先验×似然”反映“类别特征”同时发生的可能性高斯作用解决连续特征无法直接统计概率的问题通过均值和方差确定分布曲线。通过本文的原理讲解和Python可视化可直观理解高斯朴素贝叶斯的工作流程。