การเข้ารหัสแบบ Ordinal ใน DataFrame
ฟีเจอร์ประเภท categorical สามารถเข้ารหัสได้ 2 วิธี ได้แก่ one-hot encoding และ ordinal encoding ใน one-hot encoding แต่ละหมวดหมู่จะกลายเป็นคอลัมน์ โดยคอลัมน์ที่ตรงกับหมวดหมู่ของแต่ละแถวจะมีค่าเป็น 1 และคอลัมน์อื่นเป็น 0 ส่วน ordinal encoding จะแมปแต่ละหมวดหมู่ให้เป็นค่าจำนวนเต็มตั้งแต่ 0 จนถึงจำนวนหมวดหมู่ทั้งหมด
ในแบบฝึกหัดนี้ จะวนลูปผ่านทุกคอลัมน์ใน DataFrame users เพื่อเข้ารหัสหมวดหมู่แบบ ordinal นอกจากนี้ยังจะจัดเก็บ encoder สำหรับแต่ละคอลัมน์ไว้ใน dictionary ชื่อ ordinal_enc_dict เพื่อให้สามารถแปลงคอลัมน์ที่เข้ารหัสแล้วกลับไปเป็นหมวดหมู่เดิมได้
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การจัดการข้อมูลที่หายไปใน Python
คำแนะนำการฝึกหัด
- กำหนด dictionary เปล่าชื่อ
ordinal_enc_dict - สร้างออบเจกต์ Ordinal Encoder สำหรับแต่ละคอลัมน์
- เลือกค่าที่ไม่ใช่ null ของคอลัมน์ใน users แล้วทำการเข้ารหัส
- กำหนดค่าที่เข้ารหัสแล้วกลับไปยังค่าที่ไม่ใช่ null ของแต่ละคอลัมน์ (
col_name) ใน users
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Create an empty dictionary ordinal_enc_dict
ordinal_enc_dict = ___
for col_name in users:
# Create Ordinal encoder for col
ordinal_enc_dict[col_name] = ___
col = users[col_name]
# Select non-null values of col
col_not_null = ___
reshaped_vals = col_not_null.values.reshape(-1, 1)
encoded_vals = ordinal_enc_dict[col_name].fit_transform(reshaped_vals)
# Select the non-null values for the column col_name in users and store the encoded values
users.loc[___, ___] = np.squeeze(encoded_vals)