vtreat กับตัวอย่างขนาดเล็ก
ในแบบฝึกหัดนี้ จะได้ใช้ vtreat เพื่อทำ one-hot-encoding กับตัวแปรประเภท categorical บนตัวอย่างขนาดเล็ก
vtreat จะสร้าง treatment plan เพื่อแปลงตัวแปร categorical ให้เป็น indicator variables (มีรหัสว่า "lev") และทำความสะอาดค่าที่ผิดปกติในตัวแปรตัวเลข (มีรหัสว่า "clean")
หากต้องการออกแบบ treatment plan ให้ใช้ฟังก์ชัน designTreatmentsZ() (docs)
treatplan <- designTreatmentsZ(data, varlist)
data: data frame ชุดฝึกฝนต้นฉบับvarlist: vector ของตัวแปร input ที่ต้องการจัดการ (เป็น string)
designTreatmentsZ() คืนค่าเป็น list ที่มีองค์ประกอบชื่อ scoreFrame ซึ่งเป็น data frame ที่เก็บชื่อและประเภทของตัวแปรใหม่:
scoreFrame <- treatplan %>%
magrittr::use_series(scoreFrame) %>%
select(varName, origName, code)
varName: ชื่อของตัวแปรใหม่ที่ผ่านการจัดการแล้วorigName: ชื่อตัวแปรต้นฉบับที่ตัวแปรใหม่นี้มาจากcode: ประเภทของตัวแปรใหม่"clean": ตัวแปรตัวเลขที่ไม่มี NA หรือ NaN"lev": indicator variable สำหรับระดับใดระดับหนึ่งของตัวแปร categorical ต้นฉบับ
(magrittr::use_series() (docs) เป็น alias ของ $ ที่ใช้งานได้ใน pipe)
สำหรับแบบฝึกหัดเหล่านี้ เราต้องการ varName ที่มี code เป็น "clean" หรือ "lev":
newvarlist <- scoreFrame %>%
filter(code %in% c("clean", "lev") %>%
magrittr::use_series(varName)
หากต้องการแปลงชุดข้อมูลให้เป็นตัวแปรตัวเลขและตัวแปรที่ผ่าน one-hot-encoding ทั้งหมด ให้ใช้ prepare() (docs):
data.treat <- prepare(treatplan, data, varRestrictions = newvarlist)
treatplan: treatment plan ที่สร้างไว้data: data frame ที่ต้องการจัดการvarRestrictions: ตัวแปรที่ต้องการให้มีใน data ที่ผ่านการจัดการแล้ว
โหลด data frame dframe และแพ็กเกจ magrittr ไว้ให้แล้ว
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Supervised Learning ใน R: การถดถอย
คำแนะนำการฝึกหัด
- พิมพ์
dframeโดยกำหนดให้colorและsizeเป็นตัวแปร input และpopularityเป็นผลลัพธ์ที่ต้องการพยากรณ์ - สร้าง vector ชื่อ
varsที่เก็บชื่อตัวแปร input (เป็น string) - โหลดแพ็กเกจ
vtreat - ใช้
designTreatmentsZ()เพื่อสร้าง treatment plan สำหรับตัวแปรในvarsแล้วกำหนดให้กับตัวแปรtreatplan - ดึงและตรวจสอบ
scoreFrameจาก treatment plan เพื่อดูการแมปจากตัวแปรเดิมไปยังตัวแปรใหม่- ต้องการเฉพาะคอลัมน์
varName,origNameและcode - indicator variables ใหม่มีชื่อว่าอะไร และตัวแปร continuous มีชื่อว่าอะไร
- ต้องการเฉพาะคอลัมน์
- สร้าง vector
newvarsที่เก็บค่าvarNameที่มีcodeเป็นcleanหรือlevแล้วพิมพ์ผลออกมา - ใช้
prepare()เพื่อสร้าง data frame ใหม่ชื่อdframe.treatซึ่งเป็นเวอร์ชัน one-hot-encoded ของdframe(ไม่รวมคอลัมน์ผลลัพธ์)- พิมพ์ออกมาและเปรียบเทียบกับ
dframe
- พิมพ์ออกมาและเปรียบเทียบกับ
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Print dframe
dframe
# Create and print a vector of variable names
(vars <- ___)
# Load the package vtreat
___
# Create the treatment plan
treatplan <- ___(___, ___)
# Examine the scoreFrame
(scoreFrame <- treatplan %>%
use_series(scoreFrame) %>%
select(___, ___, ___))
# We only want the rows with codes "clean" or "lev"
(newvars <- scoreFrame %>%
filter(code %in% ___) %>%
use_series(varName))
# Create the treated training data
(dframe.treat <- ___(___, ___, varRestriction = newvars))