เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

Feature Hashing และ LabeledPoint

หลังจากแบ่งอีเมลออกเป็นคำแล้ว ชุดข้อมูลดิบ 'spam' และ 'non-spam' ในปัจจุบันประกอบด้วยข้อความบรรทัดเดียว เพื่อจำแนกประเภทข้อความเหล่านี้ เราต้องแปลงข้อความให้เป็น feature ก่อน

ในส่วนที่สองของแบบฝึกหัดนี้ จะเริ่มด้วยการสร้างอินสแตนซ์ HashingTF() เพื่อแมปข้อความให้เป็นเวกเตอร์ที่มี 200 feature จากนั้นสำหรับแต่ละข้อความในไฟล์ 'spam' และ 'non-spam' ให้แบ่งข้อความออกเป็นคำ แล้วแมปแต่ละคำไปยัง feature หนึ่งตัว ซึ่ง feature เหล่านี้จะถูกนำไปใช้ตัดสินว่าข้อความนั้นเป็น 'spam' หรือ 'non-spam' ต่อมาให้กำหนด label ให้กับ feature โดยข้อความปกติจะมี label เป็น 0 (หมายความว่าไม่ใช่ spam) และข้อความ 'spam' จะมี label เป็น 1 (หมายความว่าเป็น spam) สุดท้ายให้รวมชุดข้อมูลที่มี label แล้วทั้งสองชุดเข้าด้วยกัน

ข้อควรจำ: มี SparkContext sc พร้อมใช้งานใน workspace ของคุณ รวมถึงตัวแปร spam_words และ non_spam_words ก็พร้อมใช้งานแล้วเช่นกัน

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

Big Data Fundamentals with PySpark

ดูคอร์ส

คำแนะนำการฝึกหัด

  • สร้างอินสแตนซ์ HashingTF() เพื่อแมปข้อความอีเมลให้เป็นเวกเตอร์ที่มี 200 feature
  • แบ่งแต่ละข้อความในชุดข้อมูล 'spam' และ 'non-spam' ออกเป็นคำ แล้วแมปแต่ละคำไปยัง feature หนึ่งตัว
  • กำหนด label ให้กับ feature โดย 1 สำหรับ spam และ 0 สำหรับ non-spam
  • รวมตัวอย่างข้อมูล spam และ non-spam ทั้งหมดเข้าเป็นชุดข้อมูลเดียว

แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ

ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์

# 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)
แก้ไขและรันโค้ด