更新于
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]
阅读
--