2017-10-31 8 views
2

Caret 패키지의 train 함수는 최종 모델을 반환하며 주 데이터 프레임에서 잘못 분류 된 샘플의 행 인덱스를 찾고 싶습니다.Caret의 train 함수의 최종 모델에서 잘못 분류 된 샘플

library(caret) 
train_control <- trainControl(method="cv", number=5,savePredictions = TRUE,classProbs = TRUE) 
output <- train(Species~., data=iris, trControl=train_control, method="rf") 

다음 최종 모델은 다음과 같습니다 : 나는 다음과 교차 검증을

> output$finalModel 
Call: 
randomForest(x = x, y = y, mtry = param$mtry) 
      Type of random forest: classification 
       Number of trees: 500 
No. of variables tried at each split: 4 

OOB estimate of error rate: 4.67% 
Confusion matrix: 
      setosa versicolor virginica class.error 
setosa   50   0   0  0.00 
versicolor  0   47   3  0.06 
virginica  0   4  46  0.08 

하는 샘플 잘못 분류되어 찾을 수있는 방법이 있나요?

답변

1

또 다른 쉬운 방법은 예측 된 샘플을 확인하는 것입니다 : 메인 홍채 데이터와

output$output$finalModel$predicted 

그런 다음 당신이 예측 사람을 비교할 수를

0

(상기 혼동 행렬도 3 및도 4의 샘플)이을 시도

library(dplyr) 
output$pred %>% filter_("pred!=obs") 

출력 : 무작위 각 분할의 후보로서 샘플 변수의 개수이다

  pred  obs setosa versicolor virginica rowIndex mtry Resample 
1 virginica versicolor  0  0.084  0.916  71 2 Fold1 
2 versicolor virginica  0  0.976  0.024  107 2 Fold1 
3 virginica versicolor  0  0.074  0.926  71 3 Fold1 
4 versicolor virginica  0  0.990  0.010  107 3 Fold1 
5 versicolor virginica  0  0.504  0.496  130 3 Fold1 
6 virginica versicolor  0  0.070  0.930  71 4 Fold1 
7 versicolor virginica  0  0.992  0.008  107 4 Fold1 
8 versicolor virginica  0  0.550  0.450  130 4 Fold1 
9 virginica versicolor  0  0.244  0.756  78 2 Fold2 
10 virginica versicolor  0  0.172  0.828  78 3 Fold2 
11 virginica versicolor  0  0.196  0.804  78 4 Fold2 
12 versicolor virginica  0  0.922  0.078  120 2 Fold3 
13 versicolor virginica  0  0.616  0.384  135 2 Fold3 
14 versicolor virginica  0  0.928  0.072  120 3 Fold3 
15 versicolor virginica  0  0.612  0.388  135 3 Fold3 
16 versicolor virginica  0  0.930  0.070  120 4 Fold3 
17 versicolor virginica  0  0.566  0.434  135 4 Fold3 
18 virginica versicolor  0  0.352  0.648  84 2 Fold5 
19 virginica versicolor  0  0.316  0.684  84 3 Fold5 
20 virginica versicolor  0  0.256  0.744  84 4 Fold5 

참고 mtry 있고 그 Resample 교차 유효성 검사 목록을 나열합니다.

하자 플롯 잘못 분류 항목 :

d <- output$pred %>% 
    filter_("pred!=obs") %>% 
    distinct(rowIndex) %>% 
    unlist() %>% sort() 

print(unname(d)) 
# 71 78 84 107 120 130 134 135 139 

ggplot(iris, aes(Sepal.Length, Sepal.Width, colour = Species)) + 
    geom_point() + 
    geom_point(data = iris[d, ], aes(x = Sepal.Length, y = Sepal.Width), 
      color = "black") 

ggplot(iris, aes(Petal.Length, Petal.Width, colour = Species)) + 
    geom_point() + 
    geom_point(data = iris[d, ], aes(x = Petal.Length, y = Petal.Width), 
      color = "black") 

Sepal.Length ~ Sepal.Width

Petal.Length ~ Petal.Width

에서 볼 수있는 바와 같이 가, 플롯은 우리의 결과에 대한 시각적 인 설명을 제공

.