R 언어 에서 가상 변수 / 벙어리 변수 생 성

3669 단어 StatisticsandR
다음으로 전송:http://iccm.cc/generate-dummy-variable-in-r-language/
R 언어 에서 분류 변수 (factor) 를 포함 하 는 데 이 터 를 모델 링 할 때 보통 가상 변수 나 벙어리 변수 (Dummy variable) 로 자동 으로 처리 합 니 다.그러나 일부 특수 한 함수, 예 를 들 어 neuralnet 패키지 의 neuralnet 함 수 는 미리 처리 하지 않 습 니 다.원본 데 이 터 를 직접 던 지면 "requires" 가 나타 납 니 다. numeric / complex matrix / vector arguments 는 수치 / 복수 행렬 / 벡터 매개 변수 오류 가 필요 합 니 다.
이 때 이 변 수 를 삭제 하 는 것 을 제외 하고 factor variable 을 수 동 으로 값 (0, 1) 의 가상 변수 로 변환 할 수 있 습 니 다.사용 하 는 함 수 는 보통 model. matrix (), nnet package 의 class. ind () 가 있 습 니 다.
다음은 UCI 의 german credit data 를 예 로 들 어 설명 한다.
우선 UCI 사이트 에서 german. data 데이터 세트 를 다운로드 하고 str 함수 로 간단하게 인식 한다.
download.file("http://archive.ics.uci.edu/ml/machine-learning-databases/statlog/german/german.data", 
    "./german.data")
data 

이 데 이 터 는 21 개의 변수 가 있 는데 그 중에서 V21 은 목표 변수 이 고 V1 - V20 에는 integer 와 factor 두 가지 유형 이 포함 되 어 있다.다음은 V1 분류 변수 (level 4 개 포함) 와 V2, V5, V8 세 개의 수치 형 변 수 를 해석 변수 로 모델 링 합 니 다.
## 'data.frame':    1000 obs. of  21 variables:
##  $ V1 : Factor w/ 4 levels "A11","A12","A13",..: 1 2 4 1 1 4 4 2 4 2 ...
##  $ V2 : int  6 48 12 42 24 36 24 36 12 30 ...
##  $ V3 : Factor w/ 5 levels "A30","A31","A32",..: 5 3 5 3 4 3 3 3 3 5 ...
##  $ V4 : Factor w/ 10 levels "A40","A41","A410",..: 5 5 8 4 1 8 4 2 5 1 ...
##  $ V5 : int  1169 5951 2096 7882 4870 9055 2835 6948 3059 5234 ...
##  $ V6 : Factor w/ 5 levels "A61","A62","A63",..: 5 1 1 1 1 5 3 1 4 1 ...
##  $ V7 : Factor w/ 5 levels "A71","A72","A73",..: 5 3 4 4 3 3 5 3 4 1 ...
##  $ V8 : int  4 2 2 2 3 2 3 2 2 4 ...
##  $ V9 : Factor w/ 4 levels "A91","A92","A93",..: 3 2 3 3 3 3 3 3 1 4 ...
##  $ V10: Factor w/ 3 levels "A101","A102",..: 1 1 1 3 1 1 1 1 1 1 ...
##  $ V11: int  4 2 3 4 4 4 4 2 4 2 ...
##  $ V12: Factor w/ 4 levels "A121","A122",..: 1 1 1 2 4 4 2 3 1 3 ...
##  $ V13: int  67 22 49 45 53 35 53 35 61 28 ...
##  $ V14: Factor w/ 3 levels "A141","A142",..: 3 3 3 3 3 3 3 3 3 3 ...
##  $ V15: Factor w/ 3 levels "A151","A152",..: 2 2 2 3 3 3 2 1 2 2 ...
##  $ V16: int  2 1 1 1 2 1 1 1 1 2 ...
##  $ V17: Factor w/ 4 levels "A171","A172",..: 3 3 2 3 3 2 3 4 2 4 ...
##  $ V18: int  1 1 2 2 2 2 1 1 1 1 ...
##  $ V19: Factor w/ 2 levels "A191","A192": 2 1 1 1 1 2 1 2 1 1 ...
##  $ V20: Factor w/ 2 levels "A201","A202": 1 1 1 1 1 1 1 1 1 1 ...
##  $ V21: int  1 2 1 1 2 1 1 1 1 2 ...

우선 neuralnet 패 키 지 를 불 러 와 서 수치 형 변수 로 만 모델 링 을 시도 해 보 세 요. 잘못 보고 하지 않 았 습 니 다.
library("neuralnet")
NNModelAllNum 

설명 변수 에 V1 을 넣 었 을 때 다음 과 같은 오류 가 발생 했 습 니 다.
NNModel 

이 때 model. matrix 함수 로 V1 을 세 개의 가상 변수, V1A 12, V1A 13, V1A 14 로 바 꿀 수 있 습 니 다.
dummyV1 

model. matrix 함 수 는 수치 형 과 분류 Level = 2 의 분류 형 변수 에 영향 을 주지 않 기 때문에 네 개의 변 수 를 함께 이 함수 로 새로운 데이터 세트 modeldata 를 생 성하 면 이 데이터 세트 로 모델 링 을 할 수 있 습 니 다.
modelData 

다른 방법 은 nnet package 의 class. ind 함수 에서 나 옵 니 다.
library("nnet")
dummyV12 

이 결 과 는 model. matrix 와 약간 차이 가 있 고 네 개의 가상 변 수 를 생 성 한 것 을 볼 수 있 습 니 다.다 중 공선 성 을 피하 기 위해 level = n 의 분류 변 수 는 임의의 n - 1 개의 가상 변 수 를 선택해 야 합 니 다.
##      A11 A12 A13 A14
## [1,]   1   0   0   0
## [2,]   0   1   0   0
## [3,]   0   0   0   1
## [4,]   1   0   0   0
## [5,]   1   0   0   0
## [6,]   0   0   0   1

좋은 웹페이지 즐겨찾기