朴素贝叶斯是一种直接衡量标签和特征之间的概率关系的有监督学习算法,是一种专注分类的算法。其最关键的公式是:P(Y|X) = P(X|Y) * P(Y) / P(X),这里要求X、Y是相互独立的事件。因为这里有特征之间条件独立的强假设,所以才有了“朴素”的说法。

Sklearn中提供了四个朴素贝叶斯分类器:高斯分布下的朴素贝叶斯(GaussianNB)、伯努利分布下的朴素贝叶斯(BernoulliNB)、多项式分布下的朴素贝叶斯(MultinomialNB)、补集朴素贝叶斯(ComplementNB)。

本文先介绍高斯朴素贝叶斯(GaussianNB),它通过假设P(xi|Y)服从高斯分布(即正态分布),来估计每个特征下每个类别上的条件概率。以下我们用鸢尾花数据集,对高斯朴素贝叶斯做一些简单探索。

代码示例

1、导入并拆分数据集

from sklearn.datasets import load_digits
from sklearn.model_selection import train_test_split

digits = load_digits()
x, y = digits.data, digits.target

x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.3, random_state=24)

2、建模

from sklearn.naive_bayes import GaussianNB

gnb = GaussianNB()
gnb.fit(x_train, y_train)

y_pred = gnb.predict(x_test)

score = gnb.score(x_test, y_test)
print(score) #0.827

3、探索建模结果

from sklearn.metrics import confusion_matrix as CM

# 查看预测结果的概率
proba = gnb.predict_proba(x_test)
print(proba.shape) # 返回的是每个样本,对应每个分类的概率

print(proba.sum(1)) # 每一行的概率之和都是1

# 查看混淆矩阵
print(CM(y_test, y_pred))

本文为 陈华 原创,欢迎转载,但请注明出处:http://ichenhua.cn/read/298