如何与quanteda进行交叉验证?

时间:2018-05-30 01:11:29

标签: r r-caret naivebayes quanteda

考虑以下示例

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这样的工具来进行一些基本的交叉验证(小心,我的类在数据中高度不平衡)并优化,比如{{1} }。似乎F1quanteda不兼容。那么如何有效地进行交叉验证?

有什么想法吗? 谢谢!

0 个答案:

没有答案