Feature hashing și LabeledPoint
După ce am împărțit emailurile în cuvinte, seturile noastre de date brute — „spam" și „non-spam" — conțin mesaje de câte o linie. Pentru a clasifica aceste mesaje, trebuie să convertim textul în caracteristici.
În a doua parte a exercițiului, vei crea mai întâi o instanță HashingTF() pentru a mapa textul în vectori de 200 de caracteristici. Apoi, pentru fiecare mesaj din fișierele „spam" și „non-spam", vei împărți textul în cuvinte și vei mapa fiecare cuvânt la o caracteristică. Acestea sunt caracteristicile care vor fi folosite pentru a decide dacă un mesaj este „spam" sau „non-spam". Vei crea apoi etichete pentru caracteristici: 0 pentru un mesaj valid (adică nu este spam) și 1 pentru un mesaj spam. În final, vei combina ambele seturi de date etichetate.
Amintește-ți că ai un SparkContext sc disponibil în spațiul de lucru. De asemenea, variabilele spam_words și non_spam_words sunt deja disponibile în spațiul de lucru.
Acest exercițiu face parte din cursul
Fundamentele Big Data cu PySpark
Instrucțiuni pentru exercițiu
- Creează o instanță
HashingTF()pentru a mapa textul emailurilor în vectori de 200 de caracteristici. - Fiecare mesaj din seturile de date „spam" și „non-spam" este împărțit în cuvinte, iar fiecare cuvânt este mapat la o caracteristică.
- Etichetează caracteristicile: 1 pentru spam, 0 pentru non-spam.
- Combină eșantioanele spam și non-spam într-un singur set de date.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
# 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)