2017-12-09 31 views
1

저는 R에서 작업을 학습하는 내 컴퓨터에 대해 캐럿을 많이 사용합니다. 나는 내가 새로운 데이터를 득점 할 lm() 캐럿을 사용하여 예측을위한 행 번호를 얻으십시오.

  • 와 선형 회귀 분석을

    • 나는 모델 캐럿에서 훈련, 말 :

      는하지만 다음과 같은 문제에 직면 predict(model, new_data)

    • new_data 예측 자의 누락 된 값이 포함되어 있습니다. 예측은 예측을 반환하지 않습니다. 대신 NA

    가능한가요? 중 하나를 다음 NA의 예측과 new_data의 모든 행

    • 귀환 예측하는 것이 가능하지 않을 때 또는 예측에 대응 dataframe의
    • 귀환 예측 + 행 번호?

    예. 크게 mlr-package: predict with row-id

    어떤 도움 : 여기 enter image description here


    은 자세한 내용과 MLR-예측 페이지에 대한 링크는 다음 MLR-패키지에 예측이 해당하는 행 보여주는 ID-열이하는 것처럼 고맙다!

  • 답변

    1

    데이터 세트의 행 이름을 사용하여 새 열을 작성하여 caret::train()을 실행하기 전에 누락 된 값이있는 사례를 식별 할 수 있습니다. 기본값은 데이터 프레임의 행 번호입니다.

    그림으로 mlbench 패키지에서 설정 한 Sonar 데이터 사용 :

    library(mlbench) 
    data(Sonar) 
    library(caret) 
    set.seed(95014) 
    
    # add row numbers 
    Sonar$rowId <- rownames(Sonar) 
    # create training & testing data sets 
    
    inTraining <- createDataPartition(Sonar$Class, p = .75, list=FALSE) 
    training <- Sonar[inTraining,] 
    testing <- Sonar[-inTraining,] 
    # set column 60 to NA for some values in test data 
    testing[48:51,60] <- NA 
    testing[!complete.cases(testing),"rowId"] 
    

    ... 그리고 출력 :

    > testing[!complete.cases(testing),"rowId"] 
    [1] "193" "194" "200" "206" 
    

    그런 다음 테스트 데이터의 행에 predict()를 실행할 수 있습니다 완전한 케이스가있는 세트. 모델의 독립 변수에 대한 누락 된 값을 제거 할 수 있도록 전가 전략을 사용하는

    fitControl <- trainControl(method = "cv",number = 3) 
    fit <- train(x,y, method="rf",data=Sonar,trControl = fitControl) 
    predicted <- predict(fit,testing[complete.cases(testing),]) 
    

    이 상황을 처리하는 또 다른 방법입니다 : 다시 처리를 신속하게 임의의 숲 모델과 3 배의 교차 검증과 Sonar 데이터 집합을 사용하여 . Github에 대한 내 기사, Strategies for Handling Missing Values은이 주제에 대한 여러 연구 논문의 링크입니다.

    +0

    안녕하세요, 귀하의 답변은 thx입니다! complete.cases를 사용하는 것은 확실한 옵션이지만 때로는 내 데이터 집합에 누락 값이 포함 된 열이 포함되어 있지만 열은 교육에 사용되지 않습니다. 솔루션을 사용하려면 먼저 해당 열을 제거해야합니다. 나는 주어진 데이터 세트 A를 알고 싶다. A의 예측에서 rownumber는 기본 데이터 세트를 변경하지 않고 대응한다. – Christoph

    +0

    @Christoph - 출력 모델에서'colnames()'를 사용하여 테스트 데이터 세트의 열을 부분 집합 한 다음 나머지 열에'complete.cases()'를 사용하여 열이있는 테스트 데이터 세트에서 사례를 삭제하지 않도록 할 수 있습니다 모델에 없으면 누락되었습니다. –

    +0

    안녕하세요, 늦게 답장을 보내주세요.예, 할 수는 있지만 추가 코드가 많이 필요하며 누락 된 행을 미리 필터링해야합니다. 그렇지 않으면 예를 들어 정확하게 일치시킬 수 없습니다. 예측 된 날짜 열. 차라리 나는 예측이 불가능할 때 NA로 입력 데이터와 동일한 길이의 예측 벡터를 얻거나 예측이 어느 행에 해당하는지 보여주는 ID를 얻습니다. – Christoph