การทำ One-Hot Encoding กับข้อมูล Transaction
ตลอดคอร์สนี้ เราจะใช้ pipeline มาตรฐานสำหรับเตรียมข้อมูลเพื่อนำไปใช้ใน Market Basket Analysis ขั้นตอนแรกคือการนำเข้า pandas DataFrame และเลือกคอลัมน์ที่เก็บข้อมูล transaction โดย transaction แต่ละรายการในคอลัมน์จะเป็น string ที่ประกอบด้วยสินค้าหลายชิ้น คั่นด้วยเครื่องหมายจุลภาค จากนั้นใช้ฟังก์ชัน lambda เพื่อแยก string ของแต่ละ transaction ออกเป็น list ซึ่งจะแปลงคอลัมน์ดังกล่าวให้กลายเป็น list of lists
ในแบบฝึกหัดนี้ จะเริ่มต้นด้วย list of lists จากชุดข้อมูลร้านขายของชำ ซึ่งพร้อมใช้งานในชื่อตัวแปร transactions จากนั้นจะแปลง transactions ให้เป็น DataFrame แบบ one-hot encoded โดยแต่ละคอลัมน์จะประกอบด้วยค่า TRUE และ FALSE ที่บ่งบอกว่ามีสินค้านั้นอยู่ใน transaction หรือไม่
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Market Basket Analysis ด้วย Python
คำแนะนำการฝึกหัด
- นำเข้า
TransactionEncoderจากmlxtend.preprocessing - สร้าง transaction encoder และระบุรายการสินค้าที่ไม่ซ้ำกันใน
transactions - ทำ one-hot encoding กับ
transactionsเป็น array แล้วกำหนดค่าที่ได้ให้กับตัวแปรonehot - แปลง array ดังกล่าวให้เป็น
pandasDataFrame โดยใช้ชื่อสินค้าเป็น header ของคอลัมน์
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Import the transaction encoder function from mlxtend
from ____.____ import ____
import pandas as pd
# Instantiate transaction encoder and identify unique items in transactions
encoder = TransactionEncoder().____(____)
# One-hot encode transactions
onehot = encoder.____(transactions)
# Convert one-hot encoded data to DataFrame
onehot = pd.DataFrame(____, columns = encoder.columns_)
# Print the one-hot encoded transaction dataset
print(onehot)