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

กรองฟีเจอร์ที่มีความสัมพันธ์สูงออก

ในแบบฝึกหัดนี้ เราจะทำให้การลบฟีเจอร์ที่มีความสัมพันธ์สูงในชุดข้อมูล ANSUR ที่เป็นตัวเลขเป็นแบบอัตโนมัติ โดยจะคำนวณเมทริกซ์ความสัมพันธ์ แล้วกรองคอลัมน์ที่มีค่าสัมประสิทธิ์ความสัมพันธ์มากกว่า 0.95 หรือน้อยกว่า -0.95 ออก

เนื่องจากค่าสัมประสิทธิ์ความสัมพันธ์แต่ละค่าจะปรากฏสองครั้งในเมทริกซ์ (ความสัมพันธ์ของ A กับ B เท่ากับความสัมพันธ์ของ B กับ A) จึงควรละเว้นครึ่งหนึ่งของเมทริกซ์ เพื่อให้ลบออกเพียงฟีเจอร์เดียวจากทั้งสองฟีเจอร์ที่สัมพันธ์กัน ให้ใช้เทคนิค mask สำหรับจุดประสงค์นี้

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

การลดมิติข้อมูลใน Python

ดูคอร์ส

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

  • คำนวณเมทริกซ์ความสัมพันธ์ของ ansur_df แล้วนำค่าสัมบูรณ์ของเมทริกซ์นั้น
  • สร้าง boolean mask ที่มีค่า True ในสามเหลี่ยมบนขวา แล้วนำไปใช้กับเมทริกซ์ความสัมพันธ์
  • กำหนดค่าเกณฑ์สัมประสิทธิ์ความสัมพันธ์เป็น 0.95
  • ลบคอลัมน์ทั้งหมดที่ระบุไว้ใน to_drop ออกจาก DataFrame

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

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

# Calculate the correlation matrix and take the absolute value
corr_df = ansur_df.____().____()

# Create a True/False mask and apply it
mask = np.____(np.____(corr_df, dtype=____))
tri_df = corr_df.____(mask)

# List column names of highly correlated features (r > 0.95)
to_drop = [c for c in tri_df.columns if any(tri_df[c] >  ____)]

# Drop the features in the to_drop list
reduced_df = ansur_df.____(____, axis=1)

print(f"The reduced_df DataFrame has {reduced_df.shape[1]} columns.")
แก้ไขและรันโค้ด