В приведенном ниже коде R я включил предложения, пытаясь сравнить результаты, классифицированные вручную и со словарем лексики, по положительным, отрицательным и нейтральным (в matrixdata1), результаты алгоритмов для модели дают разные результаты в таблицах, которые хороший. Однако при выполнении ..
"results2 = classify_models(container2, models)"
.. при подаче новых данных (matrixdata2) для модели выдается сообщение об ошибке
"Error in predict.svm(model, container@classification_matrix, prob = TRUE, :
test data does not match model !"
Вы помогаете по этой проблеме?
Обновление (17/04/20):
Теперь я понимаю, что предложения набора поездов, использованные для создания модели, содержат специфику c слова, но новые данные, поданные против модели, включают новые слова, не распознаваемые в наборе поездов. Мне интересно, как преодолеть эту проблему. Вот несколько вариантов, о которых я думаю: -
Ограничить предложения новыми данными, включив в них только слова из набора поездов,
Или укажите ML, чтобы обратиться к словарям для поиска дополнительных слов
Или для процесса машинного обучения определить те, которые соответствуют, а те, которые не совпадают, просто скажите, что я не знать ответ от ОД.
Какой, по вашему мнению, лучший вариант для преодоления проблемы? Как это изменит код R ниже?
#Load Libraries
library(RTextTools) #RTextTools available for 3.4.1
library(e1071)
library(gmodels)
setwd(directory/path)
text= read.csv("matrixdata1.csv", header = FALSE)
# build dtm
matrix= create_matrix(text[,1:2])
mat = as.matrix(matrix)
# build the data to specify response variable, training set, testing set.
container = create_container(mat, as.numeric(as.factor(text[,3])),
trainSize=1:672, testSize=673:840,virgin=FALSE)
models = train_models(container, algorithms=c("MAXENT" , "SVM", "RF", "BAGGING", "TREE"), set_heldout = 168)
#container1
results1 = classify_models(container, models)
text2 = read.csv("matrixdata2.csv", header = FALSE)
matrix2= create_matrix(text2[,1:2])
mat2 = as.matrix(matrix2)
container2 = create_container(mat2, labels=NULL, trainSize=1:500,testSize=NULL, virgin=TRUE)
#Results from feeding in new data against the model
#When running this code below, it produces the error message outlined above in the description of the problem.
results2 = classify_models(container2, models)
Наборы данных, используемые в коде R