현재 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)
수 누군가 :
참고로Number of training samples: 32
Number of test samples: 0
rpart : 0 unknown predictions were added
numeric(0)
, 다음은 트리의 구조는 : 나는 위의 코드를 실행하면
, 나는 다음과 같은 결과를 얻을 수 predict
함수가 내가 제공 한 sampleData
의 예상 값을 반환하지 않는 이유를 이해할 수 있도록 도와주십시오.
가 가장 가능성이 정확하기 때문에 나는 당신의 의견에 동의 한 : 샘플 열이 데이터 세트를 사용합니다. 답장을 보내 주셔서 감사합니다. 내가 잘못하고있는 것이 아니라는 것을 아는 것이 좋다. 그 말은, 나는이 동작이 예상되지 않고 rpart 패키지에서 업데이트되어야한다고 생각합니다. 아마 패키지 관리자와 함께이 코드를 가져와야합니다. –