กรองฟีเจอร์ที่มีความสัมพันธ์สูงออก
ในแบบฝึกหัดนี้ เราจะทำให้การลบฟีเจอร์ที่มีความสัมพันธ์สูงในชุดข้อมูล 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.")