如何使用Python Scikit-learn构建朴素贝叶斯分类器?
朴素贝叶斯 分类是基于概率的 贝叶斯定理 ,可以用于预测未知数据集的类别。Scikit-learn有三种朴素贝叶斯模型,分别为:
- 高斯朴素贝叶斯
- 伯努利朴素贝叶斯
- 多项式朴素贝叶斯
在本教程中,我们将学习使用Python Scikit-learn(Sklearn)构建高斯朴素贝叶斯和伯努利朴素贝叶斯分类器。
高斯朴素贝叶斯分类器
高斯朴素贝叶斯分类器基于由均值和方差表征的连续分布。
让我们通过一个例子看看如何使用Scikit-Learn Python ML库构建高斯朴素贝叶斯分类器。
本例中,我们将使用高斯朴素贝叶斯模型,它假设每个标签的数据都来自简单的高斯分布。我们将使用乳腺癌威斯康星州诊断数据库。
例子
#导入必要的包
import sklearn
from sklearn.datasets import load_breast_cancer
#加载数据集并整理数据
DataSet = load_breast_cancer()
labelnames = DataSet['target_names']
labels = DataSet['target']
featurenames = DataSet['feature_names']
features = DataSet['data']
#使用train_test_split()函数将数据集整理为训练集和测试集
from sklearn.model_selection import train_test_split
train, test, train_labels, test_labels = train_test_split(features,labels,test_size = 0.30, random_state = 300)
#使用朴素贝叶斯算法进行模型评估
from sklearn.naive_bayes import GaussianNB
#初始化模型:
NBclassifier = GaussianNB()
#训练模型:
NBmodel = NBclassifier.fit(train, train_labels)
#使用pred()函数进行预测:
NBpreds = NBclassifier.predict(test)
print("The predictions are:\n", NBpreds[:15])
#找到我们的朴素贝叶斯分类器的准确度:
from sklearn.metrics import accuracy_score
print("我们的分类器的准确度为:",accuracy_score(test_labels, NBpreds) *100)
输出
它将产生以下输出 –
预测结果如下:
[0 0 1 1 0 0 0 1 1 1 1 1 0 1 0]
我们的分类器的准确度为:93.56725146198829
伯努利朴素贝叶斯分类器
伯努利朴素贝叶斯分类器是一种二元算法。当需要检查一个特性是否存在时,它非常有用。
让我们通过一个例子看看如何使用Scikit-Learn Python ML库构建伯努利朴素贝叶斯分类器。
例子
在下面给出的示例中,我们将使用scikit-learn python库在虚拟数据集上实现Bernoulli Naïve Bayes算法。
from sklearn.datasets import make_classification
# 导入库
from sklearn.datasets import make_classification
import matplotlib.pyplot as plt
# 创建一个分类数据集,每个类别有一个信息特征和一个群集
nb_samples = 300
X, Y = make_classification(n_samples=nb_samples, n_features=2, n_informative=2, n_redundant=0)
# 绘制数据集
plt.figure(figsize=(7.50, 3.50))
plt.subplots_adjust(bottom=0.05, top=0.9, left=0.05, right=0.95)
plt.subplot(111)
plt.scatter(X[:, 0], X[:, 1], marker="o", c=Y, s=40, edgecolor="k")
plt.show()
输出
我们将得到虚拟数据集如下−
示例
现在,我们在这个虚拟数据集上构建Bernoulli Naïve bayes分类器−
# 导入库
from sklearn.datasets import make_classification
import numpy as np
# 使用Bernoulli Naïve Bayes算法进行模型评估。
# 从sklearn导入Bernoulli Naive bayes
from sklearn.naive_bayes import BernoulliNB
# 使用train_test_split()函数将数据集组织为训练集和测试集
from sklearn.model_selection import train_test_split
# 创建一个包含一个信息特征和每个类别一个聚类的分类数据集
nb_samples = 300
X, Y = make_classification(n_samples=nb_samples, n_features=2, n_informative=2, n_redundant=0)
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.30)
# 初始化模型
B_NaiveBayes = BernoulliNB(binarize=0.0)
# 训练模型
B_NaiveBayes.fit(X_train, Y_train)
# 使用pred()函数进行预测
data = np.array([[0, 0], [0, 1], [1, 0], [1, 1]])
Preds=B_NaiveBayes.predict(data)
print(Preds)
输出
它将产生以下输出 –
array([0, 0, 1, 1])