Python中的朴素贝叶斯实例
更新时间:2023-12-11Python中的朴素贝叶斯实例
朴素贝叶斯分类器是一类基于贝叶斯定理的分类器。它最初被使用在文本分类的任务中。其基本思想是通过训练样本计算出各个特征对应各个类别的先验概率和条件概率,然后通过贝叶斯公式来计算后验概率。该方法简单高效,且对于高维数据特别有效。下面我们来展示如何在Python中实现朴素贝叶斯分类器。
准备数据
为了演示朴素贝叶斯分类器的使用,我们先要准备一些数据。在这个例子中,我们将使用iris数据集,该数据集包含3种不同种类的鸢尾花样本数据。具体涵盖鸢尾花的3个品种:Setosa、Versicolour、Virginica,每个品种各有50个样本,其中每个样本用4个属性来描述:花萼长度(sepal length)、花萼宽度(sepal width)、花瓣长度(petal length)、花瓣宽度(petal width)。我们将使用pandas库来读取iris数据集,并将其分成训练集和测试集。以下是将数据集划分为训练集和测试集的完整代码:
import pandas as pd from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split iris = load_iris() # 加载iris数据集 X = pd.DataFrame(iris.data, columns=iris.feature_names) # 将数据转化成pandas dataframe y = iris.target # 划分训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
训练模型
在朴素贝叶斯分类器中,我们需要计算出各个特征对应各个类别的先验概率和条件概率。根据伯努利朴素贝叶斯分类器和多项式朴素贝叶斯分类器的不同,我们需要分别计算它们的先验概率和条件概率。在这个例子中,我们将展示如何实现高斯朴素贝叶斯分类器,它假设所有特征都是高斯分布的。以下是训练模型的完整代码:
from sklearn.naive_bayes import GaussianNB gnb = GaussianNB() gnb.fit(X_train, y_train)
预测结果
训练模型之后,我们可以使用模型来进行预测。在这个例子中,我们使用测试集数据来对模型进行预测,并打印出预测结果和实际结果。以下是预测结果的完整代码:
y_pred = gnb.predict(X_test) for i in range(len(y_pred)): print("预测结果:", y_pred[i], "| 实际结果:", y_test[i])
总结
本文展示了如何在Python中实现朴素贝叶斯分类器,并使用iris数据集进行测试。我们首先将数据集划分为训练集和测试集。然后使用GaussianNB来训练模型,并使用测试集数据来进行预测,并打印出预测结果和实际结果,从而评估模型的性能。在实战中,朴素贝叶斯分类器经常被用在文本分类、垃圾邮件过滤、推荐系统和情感分析等领域。该分类器具有高效、简单、易解释等优点,对于大规模的数据集优势更为明显。