Feature hashing और LabeledPoint
ईमेल्स को शब्दों में बाँटने के बाद, हमारे रॉ डेटासेट 'spam' और 'non-spam' वर्तमान में 1-लाइन संदेशों से बने हैं. इन संदेशों को क्लासिफाई करने के लिए, हमें टेक्स्ट को फीचर्स में बदलना होगा.
अभ्यास के दूसरे हिस्से में, आप पहले एक HashingTF() इंस्टेंस बनाएँगे ताकि टेक्स्ट को 200 फीचर्स के वेक्टर में मैप किया जा सके. फिर 'spam' और 'non-spam' फाइलों में हर संदेश को शब्दों में बाँटें, और हर शब्द को एक फीचर पर मैप करें. यही वे फीचर्स होंगे जिनकी मदद से तय होगा कि कोई संदेश 'spam' है या 'non-spam'. इसके बाद, आप फीचर्स के लिए लेबल बनाएँगे. वैध (नॉन‑स्पैम) संदेश के लिए लेबल 0 होगा (अर्थात संदेश स्पैम नहीं है) और 'spam' संदेश के लिए लेबल 1 होगा (अर्थात संदेश स्पैम है). अंत में, आप दोनों labeled डेटासेट्स को मिलाएँगे.
ध्यान रखें, आपके वर्कस्पेस में SparkContext sc उपलब्ध है. साथ ही spam_words और non_spam_words वैरिएबल भी आपके वर्कस्पेस में पहले से उपलब्ध हैं.
यह अभ्यास पाठ्यक्रम का हिस्सा है
PySpark के साथ Big Data Fundamentals
अभ्यास निर्देश
- ईमेल टेक्स्ट को 200 फीचर्स के वेक्टर में मैप करने के लिए
HashingTF()इंस्टेंस बनाएँ. - '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)