как сделать перекрестную проверку с помощью Quanteda? - PullRequest
0 голосов
/ 30 мая 2018

Рассмотрим следующий пример

dtrain <- data_frame(text = c("Chinese Beijing Chinese",
                              "Chinese Chinese Shanghai",
                              "Chinese Macao",
                              "Tokyo Japan Chinese"),
                     doc_id = 1:4,
                     class = c("Y", "Y", "Y", "N"))

dtrain <- dtrain %>% mutate(class = as.factor(class))

> dtrain
# A tibble: 4 x 3
  text                     doc_id class
  <chr>                     <int> <fct>
1 Chinese Beijing Chinese       1 Y    
2 Chinese Chinese Shanghai      2 Y    
3 Chinese Macao                 3 Y    
4 Tokyo Japan Chinese           4 N

Следующий код, который обучает наивный байесовский классификатор по этим текстовым данным, работает хорошо:

trainingset <- dfm(corpus(dtrain, docid_field = 'doc_id', text_field = 'text'))

nb_test <- textmodel_nb(trainingset, docvars(trainingset, "class"), prior = "docfreq")
myprediction <- predict(nb_test, trainingset)$nb.predicted

confusionMatrix(table(trainingclass, myprediction), mode = 'prec_recall')


Confusion Matrix and Statistics

             myprediction
trainingclass N Y
            N 1 0
            Y 0 3

               Accuracy : 1          
                 95% CI : (0.3976, 1)
    No Information Rate : 0.75       
    P-Value [Acc > NIR] : 0.3164     

                  Kappa : 1          
 Mcnemar's Test P-Value : NA         

              Precision : 1.00       
                 Recall : 1.00       
                     F1 : 1.00 

Моя проблема в том, что это простоin-sample.

Другими словами, я не знаю, как я могу использовать такие инструменты, как caret, чтобы выполнить некоторую базовую перекрестную проверку (осторожно, мои классы сильно разбалансированы в данных) и оптимизировать, скажем, F1,Кажется, quanteda не совместим с caret.Как эффективно провести перекрестную проверку?

Есть идеи?Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...