如何使用Python Scikit-learn构建朴素贝叶斯分类器?

如何使用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()

输出

我们将得到虚拟数据集如下−

如何使用Python Scikit-learn构建朴素贝叶斯分类器?

示例

现在,我们在这个虚拟数据集上构建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])

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程