机器学习之朴素贝叶斯算法-----python实现垃圾邮件分类
时间: 2024-09-25 09:03:05 浏览: 12
朴素贝叶斯算法是一种基于概率统计的简单但强大的分类模型,特别适用于文本数据,如垃圾邮件识别。它假设特征之间相互独立,尽管这个假设在实际情况中往往不成立,但在许多场景下仍能取得不错的效果。
Python中可以使用`sklearn`库中的`NaiveBayes`类来实现朴素贝叶斯分类,步骤如下:
1. 导入必要的库:
```python
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.naive_bayes import MultinomialNB
from sklearn.model_selection import train_test_split
```
2. 准备数据集,包括训练集和测试集,通常包含邮件内容和标签(垃圾邮件或非垃圾邮件):
```python
data = [...] # 邮件内容列表,labels = [0 for _ in data if is_spam] + [1 for _ in data if not is_spam]
X = data['content']
y = labels
```
3. 划分训练集和测试集:
```python
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
```
4. 使用CountVectorizer将文本转换为数值特征向量:
```python
vectorizer = CountVectorizer()
X_train_vec = vectorizer.fit_transform(X_train)
X_test_vec = vectorizer.transform(X_test)
```
5. 创建并训练朴素贝叶斯模型:
```python
nb_model = MultinomialNB()
nb_model.fit(X_train_vec, y_train)
```
6. 进行预测,并评估性能:
```python
predictions = nb_model.predict(X_test_vec)
accuracy = accuracy_score(y_test, predictions)
```