spam-checkpoint

P(Spam|Features) = (P(Features|Spam) * P(Spam)) / P(Features)✅ 整体功能结构概览
📥 1
下载并解压数据集
1-3
📊 2
加载和探索数据
4-6
🧹 3
数据清洗和预处理
7-15
🧠 4
特征提取和标签处理
16
🤖 5
模型构建与调参
17-18
🧪 6
模型评估与预测新样本
19-23
💾 7
模型保存与加载
24-26
🔍 分步骤详细解释(共 27 段)
📥 数据下载与解压(1-3)
使用
requests从 UCI 下载短信数据集。利用
zipfile+io.BytesIO直接在内存中解压 zip 内容到sms_spam_collection/文件夹。用
os.listdir()检查解压是否成功。
📊 数据加载与基础探索(4-6)
使用
pandas加载SMSSpamCollection数据(tab分隔,无表头)。查看数据前几行、统计信息和结构(
head()、describe()、info())。检查是否存在缺失值。
🧹 文本清洗与预处理(7-15)
打印一条分隔线表示预处理开始。
下载 NLTK 的
punkt、stopwords,准备 NLP 工具。把 message 转换为小写。
去除除了
$和!以外的标点和数字。用
word_tokenize()将每条消息分词。移除英语停用词(如 “the”, “is”, “and” 等)。
使用 PorterStemmer 词干化(将 words like "running" → "run")。
将词的列表重新拼接为字符串,供后续向量化使用。
🧠 特征提取与标签编码(16)
使用
CountVectorizer(1-2 gram)将文本转换为稀疏矩阵;min_df=1, max_df=0.9控制出现频率;y = 1代表 spam,0是非 spam。
🤖 模型构建与超参搜索(17-18)
用
Pipeline串联向量器 + 多项式朴素贝叶斯分类器。使用
GridSearchCV对alpha参数做网格搜索,使用 F1 分数进行评估,输出最优模型。
🧪 新样本预测与可视化(19-23)
提供 5 条新消息做测试(包含广告、普通对话、提醒等)。
自定义
preprocess_message()函数,实现和训练时一样的清洗流程。对新样本做预处理。
用训练好的向量器转换为特征。
使用分类器进行预测,并输出每条消息是“Spam”还是“Not-Spam”,并展示对应的概率。
💾 模型保存与加载(24-26)
使用
joblib保存模型到本地(.joblib格式)。加载模型,重复调用
.predict()来验证保存效果。(空代码 cell,未使用)
Last updated