python实现应用朴素贝叶斯算法的垃圾邮件分类
时间: 2023-07-26 09:43:47 浏览: 109
下面是一个简单的Python实现,使用朴素贝叶斯算法对垃圾邮件进行分类:
```python
import numpy as np
import pandas as pd
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.model_selection import train_test_split
from sklearn.naive_bayes import MultinomialNB
from sklearn.metrics import accuracy_score
# 加载数据集
df = pd.read_csv('spam.csv', encoding='latin-1')
df = df[['v1', 'v2']]
df = df.rename(columns={'v1': 'label', 'v2': 'text'})
# 将标签转换为二进制值
df['label'] = df['label'].map({'ham': 0, 'spam': 1})
# 分割数据集
X_train, X_test, y_train, y_test = train_test_split(df['text'], df['label'], random_state=1)
# 特征提取
vectorizer = CountVectorizer()
X_train = vectorizer.fit_transform(X_train)
X_test = vectorizer.transform(X_test)
# 训练模型
clf = MultinomialNB()
clf.fit(X_train, y_train)
# 预测并评估模型
y_pred = clf.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
print('Accuracy:', accuracy)
```
上述代码中,我们首先加载数据集,并将标签转换为二进制值。然后,使用`train_test_split`函数对数据集进行分割,将其划分为训练集和测试集。接下来,使用`CountVectorizer`对文本数据进行特征提取,并将其转换为稀疏矩阵表示。最后,使用`MultinomialNB`训练朴素贝叶斯分类器,并对测试集进行预测和评估,输出准确率。
需要注意的是,上述代码中只是一个简单的示例,实际应用中可能需要进行更多的数据预处理和特征工程,以及调整超参数来优化模型性能。
阅读全文