python NB算法
时间: 2024-12-26 22:26:36 浏览: 11
### Python 中朴素贝叶斯算法的实现与应用
#### 朴素贝叶斯简介
朴素贝叶斯是一种基于贝叶斯定理的概率分类方法,假设特征之间相互独立。该模型简单有效,在许多实际场景中表现出良好的性能[^2]。
#### 使用 `scikit-learn` 实现朴素贝叶斯
Python 的机器学习库 `scikit-learn` 提供了多种朴素贝叶斯变体的实现方式:
1. **高斯朴素贝叶斯 (GaussianNB)**:适用于连续型数据;
2. **多项式朴素贝叶斯 (MultinomialNB)**:常用于离散计数数据,如词频向量;
3. **伯努利朴素贝叶斯 (BernoulliNB)**:适合二元分布的数据;
以下是使用 `scikit-learn` 库来构建并训练一个简单的朴素贝叶斯分类器的例子:
```python
from sklearn.datasets import fetch_20newsgroups
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.naive_bayes import MultinomialNB
from sklearn.metrics import accuracy_score
from sklearn.model_selection import train_test_split
# 加载新闻组数据集
data = fetch_20newsgroups(subset='all')
X_train, X_test, y_train, y_test = train_test_split(data.data, data.target, test_size=0.2)
# 文本向量化处理
vectorizer = CountVectorizer()
X_train_counts = vectorizer.fit_transform(X_train)
X_test_counts = vectorizer.transform(X_test)
# 创建并训练朴素贝叶斯分类器
clf = MultinomialNB().fit(X_train_counts, y_train)
# 预测测试集标签
predicted = clf.predict(X_test_counts)
print(f'Accuracy: {accuracy_score(y_test, predicted):.4f}')
```
这段代码展示了如何加载文本数据、将其转换为数值表示形式以及训练一个多类别的朴素贝叶斯分类器,并评估其准确性。
#### 处理缺失值的能力
值得注意的是,某些版本的朴素贝叶斯能够很好地应对含有缺失值的情况。当遇到未见词汇或其他类型的缺失输入时,这些实现可以自动调整概率估计过程以保持鲁棒性[^3]。
阅读全文