针对data垃圾邮件数据集纯文本字母第一列type第二列texttype中ham为非垃圾邮件spam为垃圾邮件怎么使用python对数据集进行数据清洗显示是否为垃圾邮件的检测关键字词并可以自行添加新的关键词作为新的特征进行新的预测
- 导入数据集
首先,我们需要导入数据集。可以使用pandas库中的read_csv()函数读取csv文件,将其保存为一个数据框。
import pandas as pd
data = pd.read_csv('spam.csv', encoding='latin-1')
- 数据清洗
数据清洗是数据分析的重要步骤之一。在这个数据集中,我们需要删除无用的列,并将ham和spam转换为0和1。
# 删除无用的列
data.drop(['Unnamed: 2', 'Unnamed: 3', 'Unnamed: 4'], axis=1, inplace=True)
# 将ham和spam转换为0和1
data['type'] = data['type'].map({'ham': 0, 'spam': 1})
- 显示关键词
我们可以使用nltk库来显示邮件中的关键词。首先,我们需要安装nltk库并下载停用词。
import nltk
nltk.download('stopwords')
然后,我们可以使用nltk库中的Tokenize和FreqDist函数来显示邮件中的关键词。
from nltk.tokenize import word_tokenize
from nltk.probability import FreqDist
from nltk.corpus import stopwords
# 将文本转换为小写并进行分词
text = data['text'].str.lower()
tokens = text.apply(word_tokenize)
# 去除停用词
stop_words = set(stopwords.words('english'))
tokens = tokens.apply(lambda x: [word for word in x if word not in stop_words])
# 统计关键词频率
fdist = FreqDist([word for token in tokens for word in token])
print(fdist.most_common(10))
这将显示邮件中出现频率最高的10个单词。
- 添加新特征
我们可以根据显示的关键词添加新的特征。例如,如果我们发现“free”和“offer”是垃圾邮件中出现频率最高的单词,我们可以将它们作为新的特征。
# 添加新特征
data['free'] = text.apply(lambda x: 1 if 'free' in x else 0)
data['offer'] = text.apply(lambda x: 1 if 'offer' in x else 0)
现在,我们可以使用这些新特征来训练机器学习模型并预测垃圾邮件
原文地址: https://www.cveoy.top/t/topic/gS66 著作权归作者所有。请勿转载和采集!