首先,我们需要导入必要的库:

import pandas as pd
import re
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.naive_bayes import GaussianNB

然后,我们可以使用pandas库读取数据集:

data = pd.read_csv('spam.csv', encoding='latin-1')

接下来,我们需要对数据进行清洗。首先,我们需要将所有的文本转换为小写字母:

data['text'] = data['text'].apply(lambda x: x.lower())

然后,我们需要去除所有的标点符号和数字:

data['text'] = data['text'].apply(lambda x: re.sub('[^a-zA-Z]', ' ', x))

接下来,我们需要将文本转换为单词列表:

data['text'] = data['text'].apply(lambda x: x.split())

然后,我们可以定义一个函数来检测是否包含垃圾邮件的关键字词:

def contains_spam_keywords(text):
    spam_keywords = ['buy', 'cash', 'click', 'earn', 'extra', 'guarantee', 'income', 'money', 'offer', 'opportunity', 'promotion', 'sale', 'save', 'win']
    for keyword in spam_keywords:
        if keyword in text:
            return True
    return False

我们可以使用apply函数将该函数应用于每一行的文本:

data['contains_spam_keywords'] = data['text'].apply(lambda x: contains_spam_keywords(x))

最后,我们可以使用朴素贝叶斯高斯模型来进行预测:

vectorizer = CountVectorizer()
X = vectorizer.fit_transform(data['text'].apply(lambda x: ' '.join(x)))
y = data['type']

model = GaussianNB()
model.fit(X.toarray(), y)

new_text = ['Get rich quick!', 'Hi, how are you?']
new_X = vectorizer.transform(new_text)
new_y = model.predict(new_X.toarray())

print(new_y)

以上代码将输出新文本的预测结果,即是否为垃圾邮件。如果你想添加新的关键字词进行预测,只需要修改contains_spam_keywords函数中的spam_keywords列表即可

针对data垃圾邮件数据集纯文本字母第一列type第二列texttype中ham为非垃圾邮件spam为垃圾邮件怎么使用python对数据集进行数据清洗显示是否为垃圾邮件的检测关键字词并可以自行添加新的关键词进行新的预测使用朴素贝叶斯高斯模型

原文地址: https://www.cveoy.top/t/topic/gS8D 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录