朴素贝叶斯算法是一种基于应用贝叶斯定理的分类技术,其中强烈假设所有预测变量彼此独立。简而言之,假设是某个类中某个要素的存在独立于同一类中其他任何要素的存在。
在贝叶斯分类中,主要的兴趣是找到后验概率,即给定某些观察到的特征的标签的概率。借助贝叶斯定理,无涯教程可以将其定量表示为:
P(L|features)=P(L)P(features|L)P(features)
Python库,Scikit learning是最有用的库,可帮助在Python中创建Naive Bayes模型。在Scikit学习Python库下,具有以下三种朴素贝叶斯模型:
它是最简单的朴素贝叶斯分类器,假设每个标签的数据均来自简单的高斯分布。
另一个有用的朴素贝叶斯分类器是多项朴素贝叶斯,其中的特征假定是从简单的多项式分布中得出的,这种朴素的贝叶斯最适合代表离散计数的函数。
另一个重要模型是伯努利·朴素贝叶斯(BernoulliNaïveBayes),其中的特征被假定为二进制(0和1)。
根据无涯教程的数据集,可以选择上述任何朴素贝叶斯模型。在这里,正在用Python实现高斯朴素贝叶斯模型-将从所需的导入开始,如下所示:
import numpy as np import matplotlib.pyplot as plt import seaborn as sns; sns.set()
现在,通过使用 Scikit learning 的 make_blobs()函数,可以生成具有高斯分布的点的斑点,如下所示:
from sklearn.datasets import make_blobs X, y=make_blobs(300, 2, centers=2, random_state=2, cluster_std=1.5) plt.scatter(X[:, 0], X[:, 1], c=y, s=50, cmap=summer);
接下来,对于使用 GaussianNB 模型,需要导入并使其对象如下:
from sklearn.naive_bayes import GaussianNB model_GBN=GaussianNB() model_GNB.fit(X, y);
现在,必须进行预测。可以在生成一些新数据之后执行以下操作-
rng=np.random.RandomState(0) Xnew=[-6, -14] + [14, 18] * rng.rand(2000, 2) ynew=model_GNB.predict(Xnew)
接下来,正在绘制新数据以查找其边界-
plt.scatter(X[:, 0], X[:, 1], c=y, s=50, cmap=summer) lim=plt.axis() plt.scatter(Xnew[:, 0], Xnew[:, 1], c=ynew, s=20, cmap=summer, alpha=0.1) plt.axis(lim);
现在,借助以下代码行,无涯教程可以找到第一个和第二个标签的后验概率-
yprob=model_GNB.predict_proba(Xnew) yprob[-10:].round(3)
array([[0.998, 0.002], [1. , 0. ], [0.987, 0.013], [1. , 0. ], [1. , 0. ], [1. , 0. ], [1. , 0. ], [1. , 0. ], [0. , 1. ], [0.986, 0.014]])
分类算法 - 朴素贝叶斯 - 无涯教程网无涯教程网提供朴素贝叶斯算法是一种基于应用贝叶斯定理的分类技术,其中强烈假设所有预测变量彼此...https://www.learnfk.com/python-machine-learning/machine-learning-with-python-classification-algorithms-naive-bayes.html