2014-04-18 2 views
1

R의 캐럿 패키지를 사용하여 일반적인 로지스틱 회귀를 수행하고 있습니다. 1 또는 0을 코딩 한 이진 응답 변수가 SALES_FLAG라고하고 140 개의 숫자 응답 변수가 dummyVars를 사용했습니다. 더미 변수로 변환하기 위해 R의 함수.캐럿 (Caret) 패키지의 예측 함수에서 오류가 발생합니다.

data <- dummyVars(~., data = data_2, fullRank=TRUE,sep="_",levelsOnly = FALSE) 
dummies<-(predict(data, data_2)) 
model_data<- as.data.frame(dummies) 

이렇게하면 사용할 데이터 프레임이됩니다. 모든 변수는 숫자입니다. 기차 기능을 사용하여 내 모델을 학습하는

trainIndex <- createDataPartition(model_data$SALE_FLAG, p = .80,list = FALSE) 
train <- model_data[ trainIndex,] 
test <- model_data[-trainIndex,] 

시간 :

model <- train(SALE_FLAG~. data=train,method = "glm") 

모든 것이 좋은 실행하고 나는 모델을 얻을 수를 다음으로 교육 및 시험으로 분할.

predict(model, newdata =test,type="prob") 

와 나는 오류 얻을 :하지만 실행할 때 예측 내가 필요한 그것은 나를 포기하지 않는 기능을 내가 가진 "PROB"를 교체 할 때

Error in dimnames(out)[[2]] <- modelFit$obsLevels : 


length of 'dimnames' [2] not equal to array extent 

한편을 "원시" 예측 함수의 내부에서 예측을 얻지 만 확률이 필요하므로이 값을 내 임계 값의 이진 변수로 코딩 할 수 있습니다.

이유가 확실하지 않습니다. 나는 캐럿 패키지를 사용하지 않고 같은 일을했고, 그것은 어떻게해야했다 : 나는 약간의 시간이보고하지만 진행하고 나에게 매우 이상한 보인다 확실하지 지출

model2 <- glm(SALE_FLAG ~ ., family = binomial(logit), data = train) 
predict(model2, newdata =test, type="response") 

. 나는 수식을 사용하지 않았고 X와 Y를 사용한다는 것을 의미하는 기차 함수의 많은 변형을 시도했다. 나는 확인하기 위해 method = 'bayesglm'을 사용했고 id는 나에게 같은 오류를 주었다. 누군가가 나를 도울 수 있기를 바랍니다. 필자가 필요로하는 것을 얻기 위해 열차 기능을 사용하기 때문에 사용할 필요는 없지만, 캐럿 패키지는 많은 도구를 갖춘 좋은 패키지이며 이것을 이해할 수 있기를 바랍니다.

답변

2

표시 str(train)str(test). 나는 결과 변수가 숫자라고 의심한다. 따라서 train은 회귀 분석을한다고 생각한다. 그것은 또한 model 인쇄에서 분명해야합니다. 분류 작업을 원할 경우 고려하십시오.

최대

+0

고마워요! 응답 변수를 팩터로 변환 한 후에야 정상적으로 작동합니다. 이것은 Caret 내부의 Train 기능을 사용할 때이 모든 것을 기반으로 할 것입니까? – user3527301

관련 문제