CommencerCommencer gratuitement

Hachage de caractéristiques et LabelPoint

Après avoir divisé les e-mails en mots, nos ensembles de données brutes « spam » et « non-spam » sont actuellement composés de messages d'une ligne. Pour classer ces messages, nous devons convertir le texte en caractéristiques.

Dans la deuxième partie de l'exercice, vous allez d'abord créer une instance HashingTF() pour mettre en correspondance du texte avec des vecteurs de 200 caractéristiques. Ensuite, pour chaque message des fichiers « spam » et « non-spam », vous les diviserez en mots et associerez chaque mot à une caractéristique. Ce sont ces caractéristiques qui seront utilisées pour décider si un message est indésirable (« spam ») ou pas (« non-spam »). Vous créerez ensuite des étiquettes pour les caractéristiques. Pour un message valide, l'étiquette sera 0 (c'est-à-dire que le message n'est pas indésirable) et pour un message « spam », l'étiquette sera 1 (c'est-à-dire que le message est un spam). Enfin, vous combinerez les deux ensembles de données étiquetées.

Rappelez-vous qu’un SparkContext sc est déjà disponible dans votre espace de travail. Les variables spam_words et non_spam_words sont également déjà disponibles dans votre espace de travail.

Cet exercice fait partie du cours

Principes fondamentaux des mégadonnées avec PySpark

Afficher le cours

Instructions

  • Créez une instance HashingTF() pour mapper le texte d'un e-mail avec des vecteurs de 200 caractéristiques.
  • Chaque message des ensembles de données « spam » et « non-spam » est divisé en mots, et chaque mot est associé à une caractéristique.
  • Étiquetez les caractéristiques : 1 pour le spam, 0 pour le non-spam.
  • Combinez les échantillons de spam et de non-spam en un même ensemble de données.

Exercice interactif pratique

Essayez cet exercice en complétant cet exemple de code.

# 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)
Modifier et exécuter le code