วิธีดำเนินการเข้ารหัสแบบ one-hot ใน python


การเข้ารหัสแบบร้อนแรงเดียว ใช้เพื่อแปลงตัวแปรหมวดหมู่ให้เป็นรูปแบบที่ อัลกอริธึมการเรียนรู้ของเครื่อง สามารถใช้งานได้ง่าย

แนวคิดพื้นฐานของการเข้ารหัสแบบร้อนแรงคือการสร้างตัวแปรใหม่ที่ใช้ค่า 0 และ 1 เพื่อแสดงค่าหมวดหมู่ดั้งเดิม

ตัวอย่างเช่น รูปภาพต่อไปนี้แสดงให้เห็นว่าเราจะเข้ารหัสแบบครั้งเดียวเพื่อแปลงตัวแปรหมวดหมู่ที่มีชื่อทีมเป็นตัวแปรใหม่ที่มีค่าเพียง 0 และ 1 เท่านั้น:

ตัวอย่างทีละขั้นตอนต่อไปนี้แสดงวิธีการเข้ารหัสแบบร้อนแรงสำหรับชุดข้อมูลนี้ใน Python

ขั้นตอนที่ 1: สร้างข้อมูล

ขั้นแรก เรามาสร้าง DataFrame แพนด้าดังต่อไปนี้:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'A', 'B', 'B', 'B', 'B', 'C', 'C'],
                   ' points ': [25, 12, 15, 14, 19, 23, 25, 29]})

#view DataFrame
print (df)

  team points
0 to 25
1 to 12
2 B 15
3 B 14
4 B 19
5 B 23
6 C 25
7 C 29

ขั้นตอนที่ 2: ทำการเข้ารหัสแบบร้อนครั้งเดียว

ต่อไป เรามานำเข้าฟังก์ชัน OneHotEncoder() จากไลบรารี sklearn และใช้มันเพื่อทำการเข้ารหัสแบบ hot บนตัวแปร ‘ทีม’ ใน DataFrame ของ pandas:

 from sklearn. preprocessing import OneHotEncoder

#creating instance of one-hot-encoder
encoder = OneHotEncoder(handle_unknown=' ignore ')

#perform one-hot encoding on 'team' column 
encoder_df = pd. DataFrame ( encoder.fit_transform (df[[' team ']]). toarray ())

#merge one-hot encoded columns back with original DataFrame
final_df = df. join (encoder_df)

#view final df
print (final_df)

  team points 0 1 2
0 to 25 1.0 0.0 0.0
1 to 12 1.0 0.0 0.0
2 B 15 0.0 1.0 0.0
3 B 14 0.0 1.0 0.0
4 B 19 0.0 1.0 0.0
5 B 23 0.0 1.0 0.0
6 C 25 0.0 0.0 1.0
7 C 29 0.0 0.0 1.0

โปรดทราบว่ามีการเพิ่มคอลัมน์ใหม่สามคอลัมน์ใน DataFrame เนื่องจากคอลัมน์ “ทีม” ดั้งเดิมมีค่าที่ไม่ซ้ำกันสามค่า

หมายเหตุ : คุณสามารถค้นหาเอกสารฉบับเต็มสำหรับฟังก์ชัน OneHotEncoder() ได้ที่นี่

ขั้นตอนที่ 3: ลบตัวแปรหมวดหมู่ดั้งเดิม

สุดท้ายนี้ เราสามารถลบตัวแปร ‘ทีม’ ดั้งเดิมออกจาก DataFrame ได้เนื่องจากเราไม่ต้องการมันอีกต่อไป:

 #drop 'team' column
final_df. drop (' team ', axis= 1 , inplace= True )

#view final df
print (final_df)

   points 0 1 2
0 25 1.0 0.0 0.0
1 12 1.0 0.0 0.0
2 15 0.0 1.0 0.0
3 14 0.0 1.0 0.0
4 19 0.0 1.0 0.0
5 23 0.0 1.0 0.0
6 25 0.0 0.0 1.0
7 29 0.0 0.0 1.0

ที่เกี่ยวข้อง: วิธีลบคอลัมน์ใน Pandas (4 วิธี)

นอกจากนี้เรายังสามารถเปลี่ยนชื่อคอลัมน์ของ DataFrame สุดท้ายเพื่อให้อ่านง่ายขึ้น:

 #rename columns
final_df. columns = ['points', 'teamA', 'teamB', 'teamC']

#view final df
print (final_df)

   points teamA teamB teamC
0 25 1.0 0.0 0.0
1 12 1.0 0.0 0.0
2 15 0.0 1.0 0.0
3 14 0.0 1.0 0.0
4 19 0.0 1.0 0.0
5 23 0.0 1.0 0.0
6 25 0.0 0.0 1.0
7 29 0.0 0.0 1.0

การเข้ารหัสแบบร้อนแรงเพียงครั้งเดียวเสร็จสิ้นแล้ว และตอนนี้เราสามารถแทรก DataFrame ของแพนด้านี้ลงในอัลกอริธึมการเรียนรู้ของเครื่องที่เราต้องการได้

แหล่งข้อมูลเพิ่มเติม

วิธีการคำนวณค่าเฉลี่ยแบบเล็มใน Python
วิธีการถดถอยเชิงเส้นใน Python
วิธีการดำเนินการถดถอยโลจิสติกใน Python

เพิ่มความคิดเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *