วิธีการเข้ารหัสฉลากใน r (พร้อมตัวอย่าง)
บ่อยครั้งในการเรียนรู้ของเครื่อง เราต้องการแปลง ตัวแปรหมวดหมู่ ให้เป็นรูปแบบตัวเลขบางประเภทที่อัลกอริธึมสามารถใช้งานได้ง่าย
วิธีหนึ่งในการทำเช่นนี้คือการใช้ การเข้ารหัสป้ายกำกับ ซึ่งจะ กำหนดค่าจำนวนเต็มแต่ละค่าตามหมวดหมู่ตามลำดับตัวอักษร
ตัวอย่างเช่น ภาพหน้าจอต่อไปนี้แสดงวิธีการแปลงค่าที่ไม่ซ้ำกันแต่ละค่าของตัวแปรหมวดหมู่ที่เรียกว่า Team ให้เป็นค่าจำนวนเต็มตามลำดับตัวอักษร:
มีสองวิธีทั่วไปในการดำเนินการเข้ารหัสฉลากใน R:
วิธีที่ 1: ใช้ Base R
df$my_var <- as. numeric (factor(df$my_var))
วิธีที่ 2: ใช้แพ็คเกจ CatEncoders
library (CatEncoders) #define original categorical labels labs = LabelEncoder. fit (df$my_var) #convert labels to numeric values df$team = transform(labs, df$my_var)
ตัวอย่างต่อไปนี้แสดงวิธีการใช้แต่ละวิธีในทางปฏิบัติ
ตัวอย่างที่ 1: การเข้ารหัสฉลากโดยใช้ Base R
รหัสต่อไปนี้แสดงวิธีการใช้ฟังก์ชัน R base factor() เพื่อแปลงตัวแปรประเภทที่เรียกว่า ทีม ให้เป็นตัวแปรตัวเลข:
#create data frame df <- data. frame (team=c('A', 'A', 'B', 'B', 'B', 'B', 'C', 'C'), points=c(25, 12, 15, 14, 19, 23, 25, 29)) #view data frame df team points 1 to 25 2 to 12 3 B 15 4 B 14 5 B 19 6 B 23 7 C 25 8 C 29 #perform label encoding on team variable df$team <- as. numeric (factor(df$team)) #view updated data frame df team points 1 1 25 2 1 12 3 2 15 4 2 14 5 2 19 6 2 23 7 3 25 8 3 29
สังเกตค่าใหม่ในคอลัมน์ ทีม :
- “A” กลายเป็น 1
- “บี” กลายเป็น 2
- “C” กลายเป็น 3
เราได้แปลงคอลัมน์ ทีม จากตัวแปรหมวดหมู่เป็นตัวแปรตัวเลขเรียบร้อยแล้ว
ตัวอย่างที่ 2: การเข้ารหัสฉลากโดยใช้แพ็คเกจ CatEncoders
รหัสต่อไปนี้แสดงวิธีใช้ฟังก์ชันในแพ็คเกจ CatEncoders() เพื่อแปลงตัวแปรหมวดหมู่ที่เรียกว่า ทีม เป็นตัวแปรตัวเลข:
library (CatEncoders) #create data frame df <- data. frame (team=c('A', 'A', 'B', 'B', 'B', 'B', 'C', 'C'), points=c(25, 12, 15, 14, 19, 23, 25, 29)) #define original categorical labels labs = LabelEncoder. fit (df$team) #convert labels to numeric values df$team = transform(labs, df$team) #view updated data frame df team points 1 1 25 2 1 12 3 2 15 4 2 14 5 2 19 6 2 23 7 3 25 8 3 29
เราสร้างค่าใหม่ต่อไปนี้ในคอลัมน์ ทีม อีกครั้ง:
- “A” กลายเป็น 1
- “บี” กลายเป็น 2
- “C” กลายเป็น 3
ซึ่งตรงกับผลลัพธ์ของตัวอย่างก่อนหน้า
โปรดทราบว่าการใช้วิธีนี้คุณสามารถใช้ inverse.transform() เพื่อรับค่าดั้งเดิมของคอลัมน์ ทีม :
#display original team labels reverse. transform (labs, df$team) [1] “A” “A” “B” “B” “B” “B” “C” “C”
แหล่งข้อมูลเพิ่มเติม
บทช่วยสอนต่อไปนี้จะอธิบายวิธีดำเนินการงานทั่วไปอื่นๆ ใน R:
วิธีสร้างตัวแปรหมวดหมู่จากการดำเนินการต่อใน R
วิธีสร้างตัวแปรหมวดหมู่ใน R
วิธีการแปลงตัวแปรเด็ดขาดให้เป็นตัวเลขใน R