การ Impute ค่าหมวดหมู่ด้วย KNN
เมื่อแปลงคอลัมน์หมวดหมู่ทั้งหมดใน DataFrame เป็นค่าเชิงอันดับแล้ว DataFrame ก็พร้อมสำหรับการ impute การใช้โมเดลทางสถิติอย่าง K-Nearest Neighbors (KNN) ช่วยให้ได้ค่า impute ที่แม่นยำยิ่งขึ้น
ในแบบฝึกหัดนี้ คุณจะ
- ใช้ฟังก์ชัน
KNN()จากfancyimputeเพื่อ impute ค่าที่หายไปใน DataFrameusersที่ผ่านการ encode เชิงอันดับแล้ว - แปลงค่าเชิงอันดับกลับเป็นหมวดหมู่เดิมโดยใช้เมธอด
.inverse_transform()ของ ordinal encoder
ข้อควรจำ: ordinal_enc_dict เก็บ OrdinalEncoder() ของ sklearn สำหรับแต่ละคอลัมน์ และ DataFrame users เก็บค่าที่ผ่านการ encode (ค่าเชิงอันดับ) ของแต่ละคอลัมน์
ฟังก์ชัน KNN(), dictionary ของ OrdinalEncoder() ชื่อ ordinal_enc_dict และ DataFrame users ถูกโหลดไว้ให้แล้ว
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การจัดการข้อมูลที่หายไปใน Python
คำแนะนำการฝึกหัด
- Impute DataFrame
usersโดยใช้เมธอดfit_transform()ของKNN_imputerโดยปัดค่าที่ได้เป็นจำนวนเต็ม - วนซ้ำผ่านคอลัมน์ใน
users - เลือก
OrdinalEncoder()ของคอลัมน์นั้นจากordinal_enc_dictแล้วเรียก.inverse_transform()บน array ที่ปรับรูปร่างแล้วreshaped
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Create KNN imputer
KNN_imputer = KNN()
# Impute 'users' DataFrame. It is rounded to get integer values
users_KNN_imputed.iloc[:, :] = np.round(___)
# Loop over the column names in 'users'
for col_name in ___:
# Reshape the column data
reshaped = users_KNN_imputed[col_name].values.reshape(-1, 1)
# Select the column's Encoder and perform inverse transform on 'reshaped'
users_KNN_imputed[col_name] = ___