朴素贝叶斯简介:
朴素贝叶斯算法(Naive Bayes, NB) 是应用最为广泛的分类算法之一。它是基于贝叶斯定义和特征条件独立假设的分类器方法。由于朴素贝叶斯法基于贝叶斯公式计算得到,有着坚实的数学基础,以及稳定的分类效率。NB模型所需估计的参数很少,对缺失数据不太敏感,算法也比较简单
高斯朴素贝叶斯简介:
高斯朴素贝叶斯假设每个特征都服从高斯分布,我们把一个随机变量X服从数学期望为μ,方差为σ^2的数据分布称为高斯分布。对于每个特征我们一般使用平均值来估计μ和使用所有特征的方差估计σ^2。
demo:
import random import numpy as np # 使用基于类目特征的朴素贝叶斯 from sklearn.naive_bayes import CategoricalNB from sklearn.model_selection import train_test_split # 模拟数据 rng = np.random.RandomState(1) # 随机生成600个100维的数据,每一维的特征都是[0, 4]之前的整数 X = rng.randint(5, size=(600, 100)) y = np.array([1, 2, 3, 4, 5, 6] * 100) data = np.c_[X, y] # X和y进行整体打散 random.shuffle(data) X = data[:,:-1] y = data[:, -1] X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) clf = CategoricalNB(alpha=1) clf.fit(X_train, y_train) acc = clf.score(X_test, y_test) print("Test Acc : %.3f" % acc) # 随机数据测试,分析预测结果,贝叶斯会选择概率最大的预测结果 x = rng.randint(5, size=(1, 100)) print(clf.predict_proba(x)) print(clf.predict(x))