vtreat trên một ví dụ nhỏ
Trong bài tập này, bạn sẽ dùng vtreat để one-hot-encode một biến phân loại trên một ví dụ nhỏ.
vtreat tạo một treatment plan để chuyển các biến phân loại thành các biến chỉ báo (mã "lev"), và làm sạch giá trị xấu khỏi các biến số (mã "clean").
Để thiết kế một treatment plan, dùng hàm designTreatmentsZ() (docs)
treatplan <- designTreatmentsZ(data, varlist)
data: data frame huấn luyện gốcvarlist: một vector các biến đầu vào cần xử lý (dưới dạng chuỗi).
designTreatmentsZ() trả về một list có phần tử scoreFrame: một data frame bao gồm tên và kiểu của các biến mới:
scoreFrame <- treatplan %>%
magrittr::use_series(scoreFrame) %>%
select(varName, origName, code)
varName: tên của biến đã xử lý mớiorigName: tên của biến gốc mà biến đã xử lý xuất phát từ đócode: loại của biến mới."clean": một biến số không có NA hoặc NaN"lev": một biến chỉ báo cho một mức cụ thể của biến phân loại gốc.
(magrittr::use_series() (docs) là bí danh cho $ mà bạn có thể dùng trong pipe.)
Trong các bài tập này, chúng ta cần varName khi code là "clean" hoặc "lev":
newvarlist <- scoreFrame %>%
filter(code %in% c("clean", "lev") %>%
magrittr::use_series(varName)
Để biến đổi bộ dữ liệu thành toàn bộ biến số và các biến one-hot-encoded, dùng prepare() (docs):
data.treat <- prepare(treatplan, data, varRestrictions = newvarlist)
treatplan: treatment plandata: data frame cần xử lývarRestrictions: các biến mong muốn trong dữ liệu đã xử lý
Data frame dframe và gói magrittr đã được nạp sẵn.
Bài tập này là một phần của khóa học
Học có giám sát với R: Hồi quy
Hướng dẫn bài tập
- In
dframe. Ta sẽ giả địnhcolorvàsizelà các biến đầu vào, vàpopularitylà biến mục tiêu cần dự đoán. - Tạo một vector tên
varschứa tên các biến đầu vào (dưới dạng chuỗi). - Nạp gói
vtreat. - Dùng
designTreatmentsZ()để tạo treatment plan cho các biến trongvars. Gán vào biếntreatplan. - Lấy và xem
scoreFrametừ treatment plan để thấy ánh xạ từ biến cũ sang biến mới.- Bạn chỉ cần các cột
varName,origNamevàcode. - Tên các biến chỉ báo mới là gì? Còn biến liên tục là gì?
- Bạn chỉ cần các cột
- Tạo một vector
newvarschứa biếnvarNamekhicodelàcleanhoặclev. In nó ra. - Dùng
prepare()để tạo data frame mớidframe.treatlà phiên bản one-hot-encoded củadframe(không gồm cột mục tiêu).- In nó ra và so sánh với
dframe.
- In nó ra và so sánh với
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
# 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))