2017-05-02 12 views
0

의 루프 내에서 패키지 (응답 변수 각각에 하나씩) 이 포함 된 여러 모델을 교육하고 싶습니다.루프 내에서 여러 모델을 훈련시키는 방법

내 데이터 프레임 data에는 46 개의 예측 변수 (모든 모델을 학습하는 데 사용됨)와 7 개의 응답이 있습니다.

일부 RCODE 나는 시도했지만 실패 :

models.list = list() 
Ynames = names(data)[47:ncol(data)] 
for(y in Ynames) 
{ 
models.list[[y]] = train(as.name(y)~., subset(data,select=-Ynames[-y]),method="".....) 
} 

내 변수 Ynames

는 모든 응답이 포함되어 있습니다. 각 모델은 단일 응답 변수로 학습해야합니다. 반복 1의 경우 Ynames[1] 응답과 46 개의 모든 예측 변수에 대해 모델을 훈련 할 것이지만 데이터 세트 data에서 모든 비 첫 번째 응답 변수 (Ynames[-1])를 제외해야합니다.

답변

1

을). [부분은이 게시물에 기반 : 대답에 대한 removing a list of columns from a data.frame using subset

models.list = list() 
Ynames = names(iris)[3:ncol(iris)] 

for(y in Ynames) 
{ 
    to.remove <- Ynames[!Ynames==y] 
    `%ni%` <- Negate(`%in%`) 
    models.list[[y]] = train(as.name(y)~., subset(iris,select = names(iris) %ni% to.remove),method="".....) 
} 
+0

감사합니다. 그것은 나를 위해, 내가 다음과 같은 오류가 발생합니다 : "model.frame.default (form = as.name (y) ~., data = subset (iris, : 개체가 매트릭스가 아닙니다."오류 –

+0

고정 입력 된 수식을 수정하면 "train (as.formula (붙여 넣기 (붙여 넣기 (붙여 넣기)", sep = "")), subset (조리개, s .... " –

+0

아, 실제 기차 기능을 확인하지 못했습니다. 하지만 위대한! – timfaber

1

수식 클래스를 방지하고 예측을위한 하나의 매트릭스 또는 data.frame 답변과 다른 사용하는 경우가 더 쉬울 것이다 : 조리개를 사용하여 (이것은 당신의 예와 일치하는 대안이 될 수

Y <- matrix(runif(700, 0, 100), ncol = 7) 
X <- matrix(runif(4600, 0, 100), ncol = 46) 
colnames(Y) <- paste("Y", 1:ncol(Y)) 
colnames(X) <- paste("X", 1:ncol(X)) 

library(caret) 

models.list = as.list(vector(length = ncol(Y))) 
for(i in 1:ncol(Y)) { 
    models.list[[i]] <- train(x = X, y = Y[,i], method = "lm") 
}