更新于 2026年7月11日

高斯贝叶斯#

高斯贝叶斯是指假定样本每个特征维度的条件概率均服从高斯分布,进而再根据贝叶斯公式来计算得到新样本在某个特征分布下其属于各个类别的后验概率,最后通过极大化后验概率来确定样本的所属类别。

示例代码#

from sklearn.naive_bayes import GaussianNB
import numpy as np
    
def load_simple_data():
    x = np.array([[0.8, 0.2, 0.3, 0.5, 0.1, 0.7, 0.1, 0.3, 0.6, 0.6],
                  [0.3, 0.8, 0.4, 0.5, 0.6, 0.5, 0.6, 0.7, 0.1, 0.6],
                  [0.3, 0.3, 0.6, 0.7, 0.8, 0.8, 0.8, 0.3, 0.3, 0.6]]).transpose()
    y = np.array([1, 1, 2, 2, 2, 1, 1, 0, 1, 0])
    return x, y

def test_naive_bayes():
    x, y = load_simple_data()
    print(f"========== GaussianNB 运行结果 ==========")
    model = GaussianNB()
    model.fit(x, y)
    print(f"\n期望mu = {model.theta_}")
    print(f"\n方差sigma = {model.var_}")
    print(f"\n先验概率 = {model.class_prior_}")
    print(f"\nlog先验概率 = {np.log(model.class_prior_)}")
    print(f"预测结果: {model.predict(np.array([[0.5, 0.12, 0.218]]))}")

运行结果#

========= GaussianNB 运行结果 ==========
期望mu = [[0.45 0.65 0.45] [0.48 0.46 0.5 ] [0.3  0.5  0.7 ]]
方差sigma = [[0.0225  0.0025  0.0225] [0.0776  0.0584  0.06] [0.02667 0.00667 0.00667]]
先验概率 = [0.2 0.5 0.3]
log先验概率 = [-1.60943791 -0.69314718 -1.2039728 ]
预测结果: [1]
阅读 --

7.5 高斯朴素贝叶斯原理与实现

在前面两节内容中,我们分别介绍了基于类别特征的Categorical朴素贝叶斯算法和基于特征权重的Multinomial朴素贝叶斯算法,而两者之间的唯一区别就体现在对条件概率的处理上。在接下来的这节内容中,我们将会介绍第3种基于朴素贝叶斯思 …