1. Học hỏi
  2. /
  3. Khoa Học
  4. /
  5. Học có giám sát với R: Hồi quy

Connected

Bài tập

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ốc
  • varlist: 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ới
  • origName: 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 plan
  • data: 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.

Hướng dẫn

100 XP
  • In dframe. Ta sẽ giả định color và size là các biến đầu vào, và popularity là biến mục tiêu cần dự đoán.
  • Tạo một vector tên vars chứ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 trong vars. Gán vào biến treatplan.
  • Lấy và xem scoreFrame từ 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, origName và code.
    • Tên các biến chỉ báo mới là gì? Còn biến liên tục là gì?
  • Tạo một vector newvars chứa biến varName khi code là clean hoặc lev. In nó ra.
  • Dùng prepare() để tạo data frame mới dframe.treat là phiên bản one-hot-encoded của dframe (không gồm cột mục tiêu).
    • In nó ra và so sánh với dframe.