2016-09-17 3 views
1

저는 주로 python + scikit 학습 배경에서 왔습니다. R에서 로지스틱 회귀 모델에 대한 교차 유효성 검사 정확도를 얻으려면 어떻게해야할까요? 나는 이것에 쉬운 방법이 없다는 것을 찾고 있었고 놀랐다. 내가 동등한를 찾고 있어요 : R의 경우로지스틱 회귀 분석을위한 교차 유효성 검사 기능 R

import pandas as pd 
from sklearn.cross_validation import cross_val_score 
from sklearn.linear_model import LogisticRegression 

## Assume pandas dataframe of dataset and target exist. 

scores = cross_val_score(LogisticRegression(),dataset,target,cv=10) 
print(scores) 

:

model = glm(df$Y~df$X,family=binomial') 
summary(model) 

을 그리고 지금은 붙어 : 나는있다. 이유는, 내 R 모델에 대한 편차는 1900 년으로, 나쁜 적합성을 의미하지만 파이썬은 85 % 10 배 교차 유효성 검사 정확도를 제공합니다. 조금 이상해 보입니다. 그래서 R에서 크로스 밸리를 실행하여 같은 결과인지 확인하고 싶었습니다.

도움을 주시면 감사하겠습니다.

+0

일탈 N 자체는 그렇게 나쁜 적합을 의미하는 것은 아니다, 매우 유익하지 않습니다. CV를 실행하려면 수동으로 맞춰 보거나 캐럿 pkg를 살펴보아야합니다. – user20650

+0

단순히 googling하면 즉시 부트 패키지에서 캐럿 패키지 또는 cv.glm으로 연결됩니다. – joran

답변

1

아래 나는 대답을 from here하고 몇 가지 변경했습니다.

변경 사항은 로짓 (Logistic) 모델로 만들고, 모델링 및 예측을 추가하고, CV 결과를 저장하고, 완전히 작동시키는 것입니다.

cv.glm()에서 boot까지 다양한 패키지와 기능을 사용할 수 있습니다.

data(ChickWeight) 

df     <- ChickWeight 
df$Y     <- 0 
df$Y[df$weight > 100] <- 1 
df$X     <- df$Diet 

df  <- df[sample(nrow(df)),] 
folds <- cut(seq(1,nrow(df)),breaks=10,labels=FALSE) 
result <- list() 

for(i in 1:10){ 
    testIndexes <- which(folds==i,arr.ind=TRUE) 
    testData <- df[testIndexes, ] 
    trainData <- df[-testIndexes, ] 
    model  <- glm(Y~X,family=binomial,data=trainData) 
    result[[i]] <- predict(model, testData) 
} 
result 

루프 내에서 정확도를 계산하는 라인을 추가하거나 루프가 완료된 후 수행 할 수 있습니다. 캐럿 패키지를 사용

3

R 버전 :

library(caret) 

# define training control 
train_control<- trainControl(method="cv", number=10) 

# train the model 
model<- train(traget~., data=dataset, trControl=train_control, method="glm", family=binomial()) 

# print cv scores 
summary(model) 
+0

그냥 추가하면 요약 (모델)에 정확도 점수가 표시되지 않습니다. 모델 $ results 않습니다. – Wboy

+0

'train_control'과'train()'함수가'caret' 패키지에서 자동으로 수행하기 때문에'trainingDataPartition'을 별도의 교육 및 테스트 데이터 세트로 만들 필요가 없습니다. – coip