Bắt đầu ngayBắt đầu miễn phí

Feature hashing và LabelPoint

Sau khi tách email thành các từ, các tập dữ liệu thô 'spam' và 'non-spam' hiện gồm các thông điệp 1 dòng. Để phân loại các thông điệp này, chúng ta cần chuyển văn bản thành các feature.

Trong phần hai của bài tập, bạn sẽ tạo một thể hiện HashingTF() để ánh xạ văn bản thành các vector gồm 200 feature. Sau đó, với mỗi thông điệp trong các tệp 'spam' và 'non-spam', bạn sẽ tách chúng thành các từ và ánh xạ mỗi từ thành một feature. Đây là các feature sẽ được dùng để quyết định một thông điệp là 'spam' hay 'non-spam'. Tiếp theo, bạn sẽ tạo nhãn cho các feature. Với thông điệp hợp lệ, nhãn sẽ là 0 (tức thông điệp không phải spam) và với thông điệp 'spam', nhãn sẽ là 1 (tức thông điệp là spam). Cuối cùng, bạn sẽ gộp cả hai tập dữ liệu đã gán nhãn.

Lưu ý, bạn có SparkContext sc trong không gian làm việc. Các biến spam_wordsnon_spam_words cũng đã có sẵn.

Bài tập này là một phần của khóa học

Nền tảng Big Data với PySpark

Xem khóa học

Hướng dẫn bài tập

  • Tạo một thể hiện HashingTF() để ánh xạ văn bản email thành các vector gồm 200 feature.
  • Mỗi thông điệp trong các tập 'spam' và 'non-spam' được tách thành các từ, và mỗi từ được ánh xạ thành một feature.
  • Gán nhãn cho các feature: 1 cho spam, 0 cho non-spam.
  • Gộp cả mẫu spam và non-spam thành một tập dữ liệu duy nhất.

Bài tập tương tác thực hành trực tiếp

Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.

# 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)
Chỉnh sửa và Chạy Mã