特征哈希与 LabelPoint
将邮件拆分为单词后,原始数据集 'spam' 和 'non-spam' 目前由单行消息组成。为了对这些消息进行分类,需要把文本转换为特征。
在本练习的第二部分,您将先创建一个 HashingTF() 实例,把文本映射为包含 200 个特征的向量。然后,对 'spam' 和 'non-spam' 文件中的每条消息进行分词,并将每个单词映射到一个特征上。这些特征将用于判断一条消息是 'spam' 还是 'non-spam'。接着,您将为特征创建标签:对于有效消息,标签为 0(即该消息不是垃圾邮件);对于 'spam' 消息,标签为 1(即该消息是垃圾邮件)。最后,您将合并这两个带标签的数据集。
请注意,您的工作区中已提供 SparkContext sc。变量 spam_words 和 non_spam_words 也已在工作区中可用。
本练习是课程的一部分
使用 PySpark 的大数据基础
练习说明
- 创建一个
HashingTF()实例,将邮件文本映射为包含 200 个特征的向量。 - 将 'spam' 和 'non-spam' 数据集中的每条消息拆分为单词,并将每个单词映射为一个特征。
- 为特征打标签:垃圾邮件为 1,非垃圾邮件为 0。
- 将垃圾邮件与非垃圾邮件样本合并为一个数据集。
交互式实操练习
通过完成这段示例代码来试试这个练习。
# Create a HashingTF instance with 200 features
tf = ____(numFeatures=200)
# Map each word to one feature
spam_features = tf.____(spam_words)
non_spam_features = tf.____(____)
# Label the features: 1 for spam, 0 for non-spam
spam_samples = spam_features.map(lambda features:LabeledPoint(____, features))
non_spam_samples = non_spam_features.map(lambda features:_____(____, features))
# Combine the two datasets
samples = spam_samples.____(non_spam_samples)