โหลดข้อมูล spam และ non-spam
Logistic Regression เป็นวิธีที่นิยมใช้ในการทำนายผลลัพธ์เชิงหมวดหมู่ และหนึ่งในการประยุกต์ใช้ที่พบบ่อยที่สุดคือการจำแนกอีเมล spam ในแบบฝึกหัด 3 ส่วนนี้ คุณจะสร้างตัวจำแนก spam ด้วย logistic regression โดยใช้ Spark MLlib โดยมีขั้นตอนโดยสังเขปดังนี้
- สร้าง RDD ของ string ที่แทนอีเมล
- รันอัลกอริทึมการดึงคุณลักษณะ (feature extraction) ของ MLlib เพื่อแปลงข้อความเป็น RDD ของเวกเตอร์
- เรียกใช้อัลกอริทึมการจำแนกประเภทบน RDD ของเวกเตอร์ เพื่อให้ได้ออบเจกต์โมเดลสำหรับจำแนกข้อมูลใหม่
- ประเมินโมเดลบนชุดข้อมูลทดสอบด้วยฟังก์ชันประเมินผลของ MLlib
ในส่วนแรกของแบบฝึกหัด จะโหลดไฟล์ 'spam' และ 'ham' (non-spam) เข้าสู่ RDD จากนั้นแยกอีเมลออกเป็นคำแต่ละคำ และดูองค์ประกอบแรกของ RDD แต่ละตัว
จำไว้ว่า SparkContext sc พร้อมใช้งานใน workspace แล้ว รวมถึงตัวแปร file_path_spam (ซึ่งเป็น path ของไฟล์ 'spam') และ file_path_non_spam (ซึ่งเป็น path ของไฟล์ 'non-spam') ก็พร้อมใช้งานเช่นกัน
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Big Data Fundamentals with PySpark
คำแนะนำการฝึกหัด
- สร้าง RDD สองตัว ตัวหนึ่งสำหรับ 'spam' และอีกตัวสำหรับ 'non-spam (ham)'
- แยกอีเมลแต่ละฉบับใน RDD ของ 'spam' และ 'non-spam' ออกเป็นคำ
- พิมพ์องค์ประกอบแรกใน RDD ที่แยกแล้วของทั้ง 'spam' และ 'non-spam'
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Load the datasets into RDDs
spam_rdd = sc.____(file_path_spam)
non_spam_rdd = sc.____(file_path_non_spam)
# Split the email messages into words
spam_words = spam_rdd.____(lambda email: email.split(' '))
non_spam_words = non_spam_rdd.____(lambda email: ____.____(' '))
# Print the first element in the split RDD
print("The first element in spam_words is", spam_words.____())
print("The first element in non_spam_words is", ____.____())