python实现朴素贝叶斯垃圾邮件分类
时间: 2024-12-10 08:12:40 浏览: 25
python编写朴素贝叶斯用于文本分类
朴素贝叶斯分类器是一种基于概率理论的分类算法,常用于文本分类任务,如垃圾邮件分类。下面是一个使用Python实现朴素贝叶斯垃圾邮件分类的示例:
```python
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.naive_bayes import MultinomialNB
from sklearn.metrics import accuracy_score, confusion_matrix, classification_report
# 读取数据集
data = pd.read_csv('spam.csv', encoding='latin-1')
# 数据预处理
data = data[['v1', 'v2']]
data = data.rename(columns={'v1': 'label', 'v2': 'message'})
# 分割数据集
X_train, X_test, y_train, y_test = train_test_split(data['message'], data['label'], test_size=0.2, random_state=42)
# 特征提取
vectorizer = CountVectorizer()
X_train_counts = vectorizer.fit_transform(X_train)
X_test_counts = vectorizer.transform(X_test)
# 训练朴素贝叶斯分类器
classifier = MultinomialNB()
classifier.fit(X_train_counts, y_train)
# 预测
y_pred = classifier.predict(X_test_counts)
# 评估模型
print("Accuracy:", accuracy_score(y_test, y_pred))
print("\nConfusion Matrix:\n", confusion_matrix(y_test, y_pred))
print("\nClassification Report:\n", classification_report(y_test, y_pred))
```
### 代码说明:
1. **导入库**:导入必要的Python库,包括`pandas`用于数据处理,`sklearn`中的模块用于模型训练和评估。
2. **读取数据集**:使用`pandas`读取数据集,并选择需要的列。
3. **数据预处理**:重命名列以便更好地理解数据。
4. **分割数据集**:将数据集分割为训练集和测试集。
5. **特征提取**:使用`CountVectorizer`将文本数据转换为数值特征。
6. **训练朴素贝叶斯分类器**:使用`MultinomialNB`训练分类器。
7. **预测**:使用训练好的模型进行预测。
8. **评估模型**:评估模型的准确性、混淆矩阵和分类报告。
阅读全文