3. 特征工程

在完成数据探索之后,我们需要将短信文本转换为机器学习可用的特征,以便进行分类任务。

这部分包括以下内容:

  • 处理类别标签:将垃圾短信(Spam)和正常短信(Ham)转换为数值型标签。
  • 文本特征提取:使用TF-IDF 和词频向量(Bag of Words, BoW) 提取文本特征。
  • 数据集划分:划分训练集和测试集,以便后续模型训练和评估。

3.1 处理类别标签

我们的目标是将 label 列(Ham / Spam)转换为数值型数据:

  • Spam → 1
  • Ham → 0
from sklearn.preprocessing import LabelEncoder

# 使用 LabelEncoder 进行标签编码
label_encoder = LabelEncoder()
df["label_encoded"] = label_encoder.fit_transform(df["label"])

# 查看编码结果
df[["label", "label_encoded"]].head(10)
  • label_encoded 列现在包含 0(Ham) 和1(Spam),可以用于分类模型。

3.2 文本特征提取

3.2.1 词频向量(Bag of Words, BoW)

Bag of Words 方法将文本转换为词频矩阵,每个短信对应一个向量,表示其包含的单词数量。

from sklearn.feature_extraction.text import CountVectorizer

# 创建 BoW 特征提取器
bow_vectorizer = CountVectorizer(stop_words='english', max_features=3000)  

# 进行特征转换
X_bow = bow_vectorizer.fit_transform(df["message"])

# 查看特征矩阵形状
print(f"BoW 特征矩阵维度: {X_bow.shape}")
  • X_bow 是一个 (样本数, 3000) 的稀疏矩阵,每一行对应一条短信,每一列对应某个单词的出现次数。

3.2.2 TF-IDF 特征

TF-IDF(Term Frequency-Inverse Document Frequency)可以衡量单词在文本中的重要性,而不仅仅是出现的次数。

from sklearn.feature_extraction.text import TfidfVectorizer

# 创建 TF-IDF 特征提取器
tfidf_vectorizer = TfidfVectorizer(stop_words='english', max_features=3000)

# 进行特征转换
X_tfidf = tfidf_vectorizer.fit_transform(df["message"])

# 查看特征矩阵形状
print(f"TF-IDF 特征矩阵维度: {X_tfidf.shape}")
  • X_tfidf 也是一个 (样本数, 3000) 的稀疏矩阵,每一行是短信的 TF-IDF 特征向量。

3.3 数据集划分

为了训练和评估模型,我们将数据集拆分为 训练集(Train Set) 和测试集(Test Set):

  • 训练集(80%) 用于训练模型
  • 测试集(20%) 用于评估模型性能
from sklearn.model_selection import train_test_split

# 选择 TF-IDF 特征
X = X_tfidf  # 也可以替换为 X_bow
y = df["label_encoded"]

# 数据集划分
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42, stratify=y)

# 查看训练集和测试集的样本数量
print(f"训练集样本数: {X_train.shape[0]}, 测试集样本数: {X_test.shape[0]}")
  • 80% 数据用于训练,20% 数据用于测试,并保持 Spam 和 Ham 的比例相同(stratify=y)。

3.4 小结

  • 类别标签转换:将 label 由Ham/Spam 转换为0/1,便于分类任务。
  • 文本特征提取:采用TF-IDF 和BoW 提取短信文本特征。
  • 数据集划分:使用 train_test_split 将数据拆分为训练集(80%)和测试集(20%)。
© 版权声明
THE END
喜欢就支持一下吧
点赞10 分享
评论 抢沙发
头像-大赛人网
欢迎您留下宝贵的见解!
提交
头像-大赛人网

昵称

取消
昵称

    请登录后查看评论内容