2017-12-07 5 views
2

SuperLearner R 패키지를 사용하고 있습니다. 기차 및 테스트 세트 모두에 대해 예측 된 y 값을 생성하려고합니다.SuperLearner 예측 오류

"newX"를 정의하지 않고 수퍼 리어너 모델을 피팅 한 후 트레인 세트에서 예측을 얻은 후 MSE 및 플롯 예측과 실제 Y 값을 계산할 수 있도록 "예측"명령을 사용하여 테스트는 다음 코드를 실행하여 설정 : 다음

sl.cv<-SuperLearner(Y = label, X = train, 
       SL.library=c("SL.randomForest", "SL.glmnet", "SL.svm"), 
       method = "method.NNLS", verbose=TRUE, cvControl=list(V=10)) 

pred.sl.cv <- predict(sl.cv, newdata=test, onlySL = T) 

을, 나는 "예측"후 다음과 같은 오류가 발생합니다 : : 나는 많은을 찾아

"개체 $ whichScreen 오류가 $ 연산자는 원자 벡터에 대해 유효하지 않습니다" SuperLearner 모델을 적용한 후 "예측"을 사용하는 방법을 배우기위한 온라인 자료입니다. 나는 Wha 다른 것은 : 즉, 장착 된 SuperLearner 모델 (이 경우 "sl.cv")의 객체 이름을 넣고 새로운 테스트 세트를 입력하십시오. $ 연산자도 입력하지 않았습니다.

왜이 오류 메시지가 표시됩니까? 이 문제를 어떻게 해결합니까?

또 다른 질문은 : cvControl = list (V = 10)를 옵션으로 추가해도 변경이 가능합니까? SuperLearner 모델의 기본 설정은 10 배 교차 유효성 검사를 수행하는 것입니다. 그래서 "cvControl = list (V = 10)"을 제거해도 아무 것도 바뀌지 않을 것입니다. 맞습니까?

귀하의 조언에 감사드립니다. 고맙습니다!

+0

라벨과 기차 데이터는 어떻게 표시됩니까? 이 행렬, 벡터, ints, 문자열 또는 그것들은 무엇입니까? – JMA

+0

레이블은 숫자 점수이며 열차 데이터는 단어 행렬 (단어 모음)입니다. –

+0

Y 변수 레이블은 벡터입니다. X 변수는 행렬입니다. 열차 및 테스트 데이터 세트는 모두 동일한 형식의 매트릭스입니다. –

답변

0

문제는 열차 및/또는 테스트 데이터에 매트릭스를 사용하고 있다는 것입니다. data.frame을 사용해야합니다. 코드를 다음과 같이 변경하십시오.

sl.cv<-SuperLearner(Y = label, X = as.data.frame(train), 
       SL.library=c("SL.randomForest", "SL.glmnet", "SL.svm"), 
       method = "method.NNLS", verbose=TRUE, cvControl=list(V=10)) 

pred.sl.cv <- predict(sl.cv, newdata=as.data.frame(test), onlySL = T) 

또한 레이블이 목록인지 확인하십시오.

+0

아, 죄송합니다. X를 테스트 및 열차 데이터로 분리하기 전에 행렬을 데이터 프레임으로 변환했습니다. 따라서 테스트 및 기차 세트는 모두 데이터 프레임입니다. 그래서 모델을 맞추는데 문제가있었습니다. 그러나 레이블을 목록으로 변경하려고 시도하지만 실제로 중요할까요? –

+0

레이블을 변경하여 문제를 해결 했습니까? – JMA