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

แปลง heuristic ให้กลายเป็น classifier

คุณแปลกใจที่ heuristic สามารถช่วยได้มากขนาดนี้ จึงตัดสินใจนำ heuristic ที่ว่า "พอร์ตที่ไม่ซ้ำกันจำนวนมากเกินไปถือว่าน่าสงสัย" มาใช้เป็น classifier โดยตรง วิธีการคือกำหนด threshold จากจำนวนพอร์ตที่ไม่ซ้ำกันของแต่ละ source เปรียบเทียบกับค่าเฉลี่ยของ source ที่มีป้ายกำกับเป็น True ซึ่งหมายถึงคอมพิวเตอร์ที่ถูกระบุว่าเป็นอันตราย ชุดข้อมูลถูกโหลดและแบ่งเป็น training และ test เรียบร้อยแล้ว จึงมีออบเจกต์ X_train, X_test, y_train และ y_test พร้อมใช้งาน และมีการ import accuracy_score() กับ numpy ในนาม np ไว้แล้ว ขอชี้แจงว่าในแบบฝึกหัดนี้จะไม่ได้ใช้ classifier จาก scikit-learn แต่จะกำหนดกฎการจำแนกประเภทด้วยตัวเองโดยตรง

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

การออกแบบ Machine Learning Workflows ด้วย Python

ดูคอร์ส

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

  • เลือกเฉพาะ host ที่ไม่ดีจาก X_train เพื่อสร้างชุดข้อมูลใหม่ชื่อ X_train_bad โดยทราบว่า y_train เป็น Boolean array
  • คำนวณค่าเฉลี่ยของคอลัมน์ unique_ports สำหรับ host ที่ไม่ดี แล้วเก็บไว้ในตัวแปร avg_bad_ports
  • สร้าง classifier ที่ทำนายว่าตัวอย่างใดก็ตามที่มีค่า unique_ports เกิน avg_bad_ports เป็น positive แล้วบันทึกผลการทำนายบนข้อมูลทดสอบไว้ในตัวแปรใหม่ชื่อ pred_port
  • คำนวณความแม่นยำของ classifier นี้บนข้อมูลทดสอบโดยใช้ accuracy_score()

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

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

# Create a new dataset X_train_bad by subselecting bad hosts
X_train_bad = ____[____]

# Calculate the average of unique_ports in bad examples
avg_bad_ports = np.____(____['unique_ports'])

# Label as positive sources that use more ports than that
pred_port = ____['unique_ports'] > ____

# Print the accuracy of the heuristic
print(____(y_test, ____))
แก้ไขและรันโค้ด