Я совершенно новичок в статистическом обучении и т. Д., Но меня особенно интересует классификация текста.Я следил за лабораторией, которую нашел по этой теме: https://cfss.uchicago.edu/text_classification.html#fnref1. К сожалению, лаборатория заканчивается, прежде чем обученная модель может быть использована для новых данных, поэтому я попытался выяснить, как завершить ее самостоятельно.
Я обучил свою модель, я использую случайный лес.Когда я пытаюсь использовать predict()
для новых данных, это выдает ошибку: Error in predict.randomForest(modelFit, newdata) :
variables in the training data missing in newdata
, что, на мой взгляд, не имеет смысла, так как тестовые данные являются буквально подмножеством исходных данных.Я предполагаю эта ошибка как-то связана с тем, как я построил свою модель в сравнении со структурой данных тестовых данных, но я, честно говоря, недостаточно компетентен, чтобы выяснить, как устранить ошибку или где она на самом деле дажевытекает из (хотя я предполагаю, что я делаю какую-то нелепую ошибку).
Есть другие сообщения с такой же ошибкой, но я думаю, что источник их ошибок отличается от моего, я пытался найти решение для этого весь день!
Полный код, который я использую ниже:
library(tidyverse)
library(tidytext)
library(stringr)
library(caret)
library(tm)
data(USCongress, package = "RTextTools")
test <- congress[1:100, ]
congress <- congress[100:nrow(congress), ]
(congress <- as_tibble(USCongress) %>%
mutate(text = as.character(text)))
(congress_tokens <- congress %>%
unnest_tokens(output = word, input = text) %>%
# remove numbers
filter(!str_detect(word, "^[0-9]*$")) %>%
# remove stop words
anti_join(stop_words) %>%
# stem the words
mutate(word = SnowballC::wordStem(word)))
(congress_dtm <- congress_tokens %>%
# get count of each token in each document
count(ID, word) %>%
# create a document-term matrix with all features and tf weighting
cast_dtm(document = ID, term = word, value = n))
congress_dtm <- removeSparseTerms(congress_dtm, sparse = .99)
congress_rf <- train(x = as.matrix(congress_dtm),
y = factor(congress$major),
method = "rf",
ntree = 200,
trControl = trainControl(method = "oob"))
final_predictions <- predict(congress_rf, newdata = test)
Последняя строка (final_predictions <- predict(congress_rf, newdata = test
) - это место, где появляется ошибка, до этого сообщения об ошибке не появлялись.