利用朴素贝叶斯算法解决垃圾邮件分类预测
时间: 2025-01-02 18:15:46 浏览: 5
### 实现垃圾邮件分类预测
朴素贝叶斯是一种基于贝叶斯定理的概率分类方法,在处理文本数据方面表现出色,尤其是在垃圾邮件过滤领域。下面展示了一个完整的Python实现过程。
#### 数据准备阶段
为了构建有效的分类器,首先需要收集并清理一批带有标签的数据集作为训练样本。这些样本应当包含足够的正负例(即正常邮件与垃圾邮件),以便让机器学习到不同类别之间的差异性特征[^1]。
```python
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.feature_extraction.text import CountVectorizer, TfidfTransformer
from sklearn.naive_bayes import MultinomialNB
from sklearn.pipeline import Pipeline
# 加载数据集 (这里假设有一个CSV文件 'spam.csv' 包含两列:message 和 label)
data = pd.read_csv('spam.csv')
X_train, X_test, y_train, y_test = train_test_split(data['message'], data['label'], test_size=0.2, random_state=42)
pipeline = Pipeline([
('vectorizer', CountVectorizer()), # 将文本转化为词频矩阵
('tfidf_transformer', TfidfTransformer()), # 应用TF-IDF权重调整
])
# 对训练集进行拟合转换操作
train_tfidf_matrix = pipeline.fit_transform(X_train).toarray()
```
此部分代码完成了从原始文本消息到数值型特征向量的转变工作,这是后续建模的基础步骤之一[^2]。
#### 构建与评估模型
接下来定义一个多变量多项式分布下的朴素贝叶斯分类器实例,并利用之前得到的TF-IDF加权后的特征向量来进行参数估计;之后再针对测试集合执行预测动作以验证性能表现。
```python
classifier = MultinomialNB()
# 训练模型
classifier.fit(train_tfidf_matrix, y_train)
# 测试集上的变换
test_tfidf_matrix = pipeline.transform(X_test).toarray()
# 预测新输入的消息是否属于垃圾邮件
predictions = classifier.predict(test_tfidf_matrix)
accuracy = sum(predictions == y_test.values)/len(y_test)*100
print(f"Accuracy on the testing set is {accuracy:.2f}%.")
```
上述流程展示了如何运用sklearn库快速搭建起一个简单的垃圾邮件检测系统框架,同时提供了基本准确率指标供参考。
阅读全文