垃圾邮件分类的各种尝试(机器学习篇)

垃圾邮件分类,作为初学者实践文本分类是一个不错的开始。文章将通过传统机器学习和深度学习的方法来解决分类问题。

机器学习方法:朴素贝叶斯、SVM、逻辑回归、RF、XGBoost、LightGBM

深度学习方法:垃圾邮件分类的各种尝试(深度学习篇)

开源代码地址(欢迎star~):https://github.com/ljx02/Spam_Email_Classificaton

数据集下载链接:由于数据较小,暂时也放到了Git项目中

解决这个问题通用的思路是:

  • 读取文本数据,包括训练集、测试集、验证集,如果数据质量不高考虑先清洗一下数据
  • 创建词典,这一步有点抽象,可以看作是对语料中的词进行统计,方便后续提取特征
  • 特征提取,通过对特征进行编码(向量化)
  • 选择模型,开始训练分类器
  • 验证模型,预测结果

数据集格式

总的数据集一共有4458条数据,将按照8:2进行划分训练集和验证集。通过分析发现,其中pam的数量有3866条,占数据集的大多数,可以考虑不平衡样本采样进行训练。

数据集的格式如图所示,有三列分别是ID,Label(pam、spam),Email

在这里插入图片描述

清洗数据集

在实际中清洗数据也是非常必要的,套用一句俗话“数据决定了模型的上限”。常用的清洗数据的方法有:去掉停用词、去掉URL、去掉HTML标签、去掉特殊符号、去掉表情符号、去掉长重复字、将缩写补全、去掉单字、提取词干等等。当然,清洗数据也可能使模型变差,需要三思。提供部分处理的参考代码如下:

- 去掉停用词

from nltk.corpus import stopwords
stop = set(stopwords.words('english'))


text = "their are so many picture. how are you do this time very much!"
clean_text = []
for word in word_tokenize(text):
    if word not in stop:
        clean_text.append(word)
print(clean_text)

- 去掉URL

# 删除URL
example = "New competition launched :https://www.kaggle.com/c/nlp-getting-started"
def remove_URL(text):
    url = re.compile(r'https?://\S+|www\.\S+')
    return url.sub(r'', text)


print(remove_URL(example))

- 去掉HTML标签

# 删除HTML标签
example = """<div>
<h1>Real or Fake</h1>
<p>Kaggle </p>
<a href="https://www.kaggle.com/c/nlp-getting-started">getting started</a>
</div>"""
def remove_html
  • 17
    点赞
  • 174
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
机器学习分类问题是指将数据集中的样本划分到不同的类别中,常见的应用包括垃圾邮件过滤、图像识别和疾病预测等。在实战中,我们可以按照以下步骤进行: 1. 数据收集和预处理:收集包含标记的数据集,并进行数据清洗、特征选择和特征编码等预处理操作。 2. 特征工程:根据问题和数据的特点,对原始特征进行转换、组合或创建新的特征。这有助于提取更有用的信息,提高模型性能。 3. 数据集划分:将数据集划分为训练集、验证集和测试集。训练集用于模型的训练,验证集用于调整模型参数和选择模型,测试集用于评估模型的性能。 4. 模型选择和训练:选择适合问题的分类算法,如逻辑回归、决策树、支持向量机、随机森林等,并使用训练集对模型进行训练。 5. 模型评估和调优:使用验证集评估模型的性能,根据评估结果调整模型参数,尝试不同的算法和特征工程方法,以提高模型的准确性和泛化能力。 6. 模型预测:使用经过调优的模型对测试集进行预测,并评估模型的性能指标,如准确率、召回率、F1值等。 7. 模型部署:将训练好的模型部署到实际应用中,进行实时预测或批量预测。 这些步骤并不是一成不变的,具体的实施方法可能会因问题的不同而有所差异。在实战中,还需要不断地迭代和优化模型,以提高分类效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值