📅  最后修改于: 2020-05-12 05:02:49             🧑  作者: Mango
本文讨论了朴素贝叶斯分类器背后的理论及其实现。
这是我们的数据集的表格表示。
表现 | 温度 | 湿度 | 有风的 | 打高尔夫球 | |
---|---|---|---|---|---|
0 | 多雨的 | 热 | 高 | 假 | 没有 |
1个 | 多雨的 | 热 | 高 | 真 | 没有 |
2 | 灰蒙蒙 | 热 | 高 | 假 | 是 |
3 | 阳光明媚 | 温和 | 高 | 假 | 是 |
4 | 阳光明媚 | 凉 | 正常 | 假 | 是 |
5 | 阳光明媚 | 凉 | 正常 | 真 | 没有 |
6 | 灰蒙蒙 | 凉 | 正常 | 真 | 是 |
7 | 多雨的 | 温和 | 高 | 假 | 没有 |
8 | 多雨的 | 凉 | 正常 | 假 | 是 |
9 | 阳光明媚 | 温和 | 正常 | 假 | 是 |
10 | 多雨的 | 温和 | 正常 | 真 | 是 |
11 | 灰蒙蒙 | 温和 | 高 | 真 | 是 |
12 | 灰蒙蒙 | 热 | 正常 | 假 | 是 |
13 | 阳光明媚 | 温和 | 高 | 真 | 没有 |
数据集分为两部分,即特征矩阵和响应向量 。
假设:
朴素贝叶斯(Naive Bayes)的基本假设是,每个功能都具有:
对结果的贡献。
关于我们的数据集,这个概念可以理解为:
注意:朴素贝叶斯(Naive Bayes)所做的假设在现实世界中通常并不正确。 实际上,独立性假设永远是不正确的,但在实践中通常效果很好。
现在,在转向朴素贝叶斯公式之前,了解贝叶斯定理很重要。
贝叶斯定理
给定已经发生的另一事件的概率,贝叶斯定理找到发生事件的概率。 贝叶斯定理在数学上由以下等式表示:
其中A和B是事件。
现在,关于我们的数据集,我们可以通过以下方式应用贝叶斯定理:
其中,y是类变量,X是从属特征向量(大小为n ),其中:
为了清楚起见,特征向量和相应的类变量的示例可以是:(请参阅数据集的第一行)
X = (Rainy, Hot, High, False) y = No
因此,基本上,P(X | y)表示在天气状况为“多雨的”,“温度较高”,“高湿度”和“无风”的情况下“不打高尔夫球”的可能性。
天真的假设
现在,是时候对贝叶斯定理做出天真的假设了,即特征之间的独立性 。 所以现在,我们将证据分为独立的部分。
现在,如果事件A和B中的任何两个是独立的,
P(A,B) = P(A)P(B)
因此,我们得出的结果是:
可以表示为:
现在,由于分母对于给定的输入保持不变,因此我们可以删除该术语:
现在,我们需要创建一个分类器模型。 为此,我们找到类别变量y的所有可能值的给定输入集的概率,并以最大概率获取输出。 这可以用数学表示为:
today = (Sunny, Hot, Normal, False)
因此,打高尔夫球的概率由下式给出:
不打高尔夫的概率由下式给出:
由于P(today)在两个概率中都是通用的,因此我们可以忽略P(today)并按比例找到概率:
和
现在,因为:
高斯朴素贝叶斯分类器
在高斯朴素贝叶斯中,与每个特征相关的连续值被假定为根据高斯分布进行分布 。 高斯分布也称为正态分布 。 绘制时,它给出了一个钟形曲线,该曲线关于特征值的平均值对称,如下所示:
假设特征的似然性是高斯的,因此条件概率由下式给出:
现在,我们看一下使用scikit-learn的高斯朴素贝叶斯分类器的实现。
# 加载虹膜数据集
from sklearn.datasets import load_iris
iris = load_iris()
# 存储特征矩阵(X)和响应向量(y)
X = iris.data
y = iris.target
# 将X和y分为训练和测试集
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.4 , random_state = 1 )
# 在训练集上训练模型
from sklearn.naive_bayes import GaussianNB
gnb = GaussianNB() gnb GaussianNB()
gnb.fit(X_train, y_train)
# 对测试集进行预测
y_pred = gnb.predict(X_test)
# 比较实际响应值(y_test)和预测响应值(y_pred)
from sklearn import metrics
print ( "Gaussian Naive Bayes model accuracy(in %):" , metrics.accuracy_score(y_test, y_pred) * 100 )
输出:
Gaussian Naive Bayes model accuracy(in %): 95.0
其他流行的朴素贝叶斯分类器是:
当我们到达本文结尾时,需要考虑以下一些重要点: