작은 예제로 vtreat 사용하기
이 연습에서는 작은 예제를 통해 vtreat로 범주형 변수를 원-핫 인코딩해 보겠습니다.
vtreat는 범주형 변수를 지시자 변수(코드 "lev")로 변환하고, 수치형 변수에서 이상값이나 결측값을 정리(코드 "clean")하기 위한 처리 계획(treatment plan)을 만듭니다.
처리 계획을 설계하려면 designTreatmentsZ() 함수를 사용하세요 (docs)
treatplan <- designTreatmentsZ(data, varlist)
data: 원본 학습 데이터 프레임varlist: 처리할 입력 변수들의 벡터(문자열)
designTreatmentsZ()는 scoreFrame 요소를 포함한 리스트를 반환합니다. scoreFrame은 새로 생성될 변수들의 이름과 유형을 담은 데이터 프레임입니다:
scoreFrame <- treatplan %>%
magrittr::use_series(scoreFrame) %>%
select(varName, origName, code)
varName: 새로 생성된 처리 변수의 이름origName: 처리 변수가 유래한 원래 변수의 이름code: 새 변수의 유형"clean": NA나 NaN이 없는 수치형 변수"lev": 원본 범주형 변수의 특정 수준을 나타내는 지시자 변수
(magrittr::use_series() (docs)는 파이프에서 사용할 수 있는 $의 별칭입니다.)
이 연습에서는 code가 "clean" 또는 "lev"인 경우의 varName이 필요합니다:
newvarlist <- scoreFrame %>%
filter(code %in% c("clean", "lev") %>%
magrittr::use_series(varName)
데이터셋을 전부 수치형 및 원-핫 인코딩된 변수로 변환하려면 prepare()를 사용하세요 (docs):
data.treat <- prepare(treatplan, data, varRestrictions = newvarlist)
treatplan: 처리 계획data: 처리할 데이터 프레임varRestrictions: 처리된 데이터에 포함할 변수들
dframe 데이터 프레임과 magrittr 패키지는 미리 로드되어 있습니다.
이 연습은 강의의 일부입니다
R로 하는 Supervised Learning: 회귀
연습 안내
dframe을 출력하세요. 여기서color와size는 입력 변수이고,popularity는 예측할 결과 변수라고 가정합니다.- 입력 변수의 이름을 문자열로 담은 벡터
vars를 만드세요. - 패키지
vtreat를 로드하세요. designTreatmentsZ()를 사용해vars의 변수들에 대한 처리 계획을 만들고, 변수treatplan에 저장하세요.- 처리 계획에서
scoreFrame을 가져와 살펴보고, 기존 변수에서 새 변수로의 매핑을 확인하세요.varName,origName,code열만 필요합니다.- 새로 생성된 지시자 변수의 이름은 무엇인가요? 연속형 변수는 무엇인가요?
code가clean또는lev인 경우의varName을 담은 벡터newvars를 만들고, 이를 출력하세요.prepare()를 사용해 결과 변수 열을 제외한dframe의 원-핫 인코딩 버전인 새 데이터 프레임dframe.treat를 만드세요.- 이를 출력하고
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))