2014-06-10 7 views
1

현재 Coursera에서 "Practical Machine Learning"과정을 진행하고 있으며 예측 기능으로 이상한 동작을 수행하고 있습니다. 질문 된 질문은 나무를 훈련시키고 몇 가지 예언을하는 것입니다. 그래서 여기에 답변을 게시하지 않고 문제에 사용 된 데이터 집합을 변경했습니다. 코드는 다음과 같습니다 :predict() 함수의 이상한 동작

rm(list = ls()) 
library(rattle) 
data(mtcars) 
mtcars$vs = as.factor(mtcars$vs) 
set.seed(125) 
model = train(am ~ ., method = 'rpart', data = mtcars) 
print(model) 
fancyRpartPlot(model$finalModel) 

sampleData = mtcars[1,] 
sampleData[1,names(sampleData)] = rep(NA, length(names(sampleData))) 
sampleData[1, c('wt')] = c(4) 
predict(model, sampleData[1,], verbose = TRUE) 

위의 코드에는 두 개의 주요 섹션이 있습니다. 첫 번째는 트리를 만들고 두 번째 모델 (sampleData이 시작됨)은 모델을 적용 할 작은 샘플 데이터 세트를 만듭니다. 원본 데이터와 완전히 동일한 구조를 가지려면 트레이닝 데이터 집합의 첫 번째 행을 복사 한 다음 모든 열을 NA으로 설정하면됩니다. 그런 다음 의사 결정 트리에 필요한 열 (이 경우 wt 변수)에만 데이터를 저장합니다.

fancyRpartPlot(model$finalModel) 

enter image description here

수 누군가 :

참고로
Number of training samples: 32 
Number of test samples:  0 

rpart : 0 unknown predictions were added 

numeric(0) 

, 다음은 트리의 구조는 : 나는 위의 코드를 실행하면

, 나는 다음과 같은 결과를 얻을 수 predict 함수가 내가 제공 한 sampleData의 예상 값을 반환하지 않는 이유를 이해할 수 있도록 도와주십시오.

답변

0

불행히도 rpartwt 변수 만 스플릿으로 사용했지만 예측을 위해서는 여전히 다른 변수가 있어야합니다.

> predict(model, mtcars[1,]) 
[1] 0.8571429 

최대

+0

가 가장 가능성이 정확하기 때문에 나는 당신의 의견에 동의 한 : 샘플 열이 데이터 세트를 사용합니다. 답장을 보내 주셔서 감사합니다. 내가 잘못하고있는 것이 아니라는 것을 아는 것이 좋다. 그 말은, 나는이 동작이 예상되지 않고 rpart 패키지에서 업데이트되어야한다고 생각합니다. 아마 패키지 관리자와 함께이 코드를 가져와야합니다. –