贝叶斯分类器是一种基于贝叶斯定理与特征条件独立假设的分类方法。其核心思想是利用已知样本的信息,对新的未知样本进行分类或预测。贝叶斯分类器具有简单、高效、可解释性强等优点,因此在自然语言处理、文本分类、垃圾邮件过滤等领域得到了广泛应用。
一、贝叶斯分类器原理
贝叶斯定理是贝叶斯分类器的理论基础,其基本形式如下:
P(A|B) = P(B|A) × P(A) / P(B)
其中,P(A|B)表示在给定B的条件下A发生的概率,P(B|A)表示在给定A的条件下B发生的概率,P(A)表示A发生的概率,P(B)表示B发生的概率。
在分类问题中,我们可以将类别作为事件A,特征作为事件B。贝叶斯定理可以帮助我们计算给定特征下某个类别的概率,从而进行分类。
二、常见贝叶斯分类器类型
- 高斯朴素贝叶斯分类器
高斯朴素贝叶斯是基于高斯分布(又称正态分布)的朴素贝叶斯分类器,适用于连续型特征。其假设特征之间相互独立,且每个特征都服从同一高斯分布。 - 多项式朴素贝叶斯分类器
多项式朴素贝叶斯分类器适用于离散型特征。其假设每个特征的出现是独立的,且每个特征在每个类别中出现的概率是固定的。 - 伯努利朴素贝叶斯分类器
伯努利朴素贝叶斯分类器适用于离散型特征,且特征取值为0或1的情况。其假设每个特征的出现是独立的,且服从伯努利分布。
三、Python实现
下面以高斯朴素贝叶斯分类器为例,介绍如何在Python中实现:
- 导入所需库
import numpy as np
from sklearn.naive_bayes import GaussianNB
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split - 加载数据集
iris = load_iris()
X = iris.data
y = iris.target - 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) - 创建高斯朴素贝叶斯分类器对象并训练模型
gnb = GaussianNB()
gnb.fit(X_train, y_train) - 预测测试集并评估模型性能
y_pred = gnb.predict(X_test)
accuracy = np.mean(y_pred == y_test) * 100
print(f’Accuracy: {accuracy:.2f}%’) - 使用模型进行预测新数据
new_data = np.array([[5.1, 3.5, 1.4, 0.2]])
class_pred = gnb.predict(new_data)
print(f’Predicted class: {class_pred}’)