Рассмотрим этот пример:
library(quanteda)
library(caret)
library(glmnet)
library(dplyr)
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"))
# now we make the dataframe bigger
dtrain <- purrr::map_df(seq_len(100), function(x) dtrain)
Давайте создадим разреженную матрицу-термин документа и запустим некоторую glmnet
> dtrain <- dtrain %>% mutate(class = as.factor(class))
> mycorpus <- corpus(dtrain, text_field = 'text')
> trainingdf <- dfm(mycorpus)
> trainingdf
Document-feature matrix of: 400 documents, 6 features (62.5% sparse).
И теперь мы, наконец, обратимся к модели лассо
mymodel <- cv.glmnet(x = trainingdf, y =dtrain$class,
type.measure ='class',
nfolds = 3,
alpha = 1,
parallel = FALSE,
family = 'binomial')
У меня два простых вопроса.
Как добавить прогнозы к исходным данным dtrain
?На самом деле, простой вывод
mypred <- predict.cv.glmnet(mymodel, newx = trainingdf,
s = 'lambda.min', type = 'class')
выглядит УЖАСНО, НЕ ТОРГОВО:
> mypred
1
1 "Y"
2 "Y"
3 "Y"
Как я могу использовать caret::confusionMatrix
в этой настройке?Просто использование следующего создает ошибку:
confusion <- caret::confusionMatrix(data =mypred,
+ reference = dtrain$class)
Error: `data` and `reference` should be factors with the same levels.
Спасибо!