2016-07-02 1 views
-2

테스트 세트의 결과를 올바르게 예측할 수있는 RF 모델이 R입니다. 나는 시도하고 모델에서 사용하는 몇 가지 새로운 데이터를 생성하고 싶었 제대로새 데이터의 임의의 포리 스트 예측자가 학습 데이터와 일치하지 않습니다.

> str(testing) 
'data.frame': 4489 obs. of 9 variables: 
$ pf    : Factor w/ 1755 levels 
$ p.E    : Factor w/ 24 levels 
$ p.EF    : Factor w/ 30 levels 
$ p.B    : Factor w/ 9 levels 
$ p.BC    : Factor w/ 26 levels 
$ p.L    : num 110 122 201 60 9 ... 
$ p.N    : Factor w/ 9 levels 
$ p    : num 580 
$ pt    : Factor w/ 30 levels 

변수 PF를 측정하고, 그래서 시도, 테스트 세트의 첫 번째 줄에 동일했다 몇 가지 새로운 데이터를 만들어 및 PF 예측 :

> df=testing[1,] 
> df=droplevels(df) 
> str(df) 
'data.frame': 1 obs. of 9 variables: 
$ pf    : Factor w/ 1 level 
$ p.E    : Factor w/ 1 level 
$ p.EF    : Factor w/ 1 level 
$ p.B    : Factor w/ 1 level 
$ p.BC    : Factor w/ 1 level 
$ p.L    : num 110 
$ p.N    : Factor w/ 1 level 
$ p    : num 580 
$ pt    : Factor w/ 1 level 

을 다음과 같은 오류 접수 :

> predict(model,df,type='class') 
Error in predict.randomForest(model, df, type = "class") : 
    Type of predictors in new data do not match that of the training data. 

누군가가이 발생한 이유를 설명하거나 내가이 문제를 해결할 수있는 방법을 제안 할 수 있습니까?

새로운 데이터를 기반으로 결과를 예측하고 모델을 만들 목적을 달성하지 못하는 새 DF에서 수준을 떨어 뜨리지 않아야합니까? 아니면 내가 뭔가 blindingly 명백한 mising 오전?

+0

을했다. – zacdav

+0

레벨을 내려서는 안됩니다. 이것은 '목적을 무력화'하지 않습니다. 새 데이터는 각 요인을 교육 집합과 동일한 수준으로 표현해야합니다. – dww

답변

-1

왜 그런지 모르지만 위의 제안이 작동하지 않았습니다.

값을 수정하고 값을 변경하고 테스트 세트의 마지막 행으로 입력 한 다음 마지막 행에서 예측을 실행했습니다. 당신이 사람들이 도움을 쉽게 할 수 있습니다 다시 생성 할 수있는 데이터 예제와 함께 귀하의 전체 코드를 포함하는 경우

df=testing[1,] 
df[9]=as.factor(4) 
testing=rbind(testing,df) 
predict(model, testing[4490,],type='class') 

이것은

+0

어떤 의미에서이 말은 "효과가 있습니다". 그것은 오류없이 달리고 예측을 주었을 가능성이 있지만 예측이 열차 집합과 현명한 관계가 있다는 것이 훨씬 명확하지 않은 것 같습니다. –