#r #machine-learning
#r #машинное обучение
Вопрос:
Я обучил модель предсказывать теги вопросов stackoverfow. Но теперь я хочу добавить в систему функцию, чтобы, когда я задаю вопрос в текстовом поле, он должен автоматически предсказывать теги этого вопроса.
я предоставляю код ниже. пожалуйста, предоставьте мне решение моей проблемы..
rm(list = ls())
# for installing the library run following codes
install.packages("readr")
install.packages("caret")
install.packages("tm")
install.packages("RTextTools")
library(readr)
library(caret)
library(tm)
library(RTextTools)
# set file path
setwd("C:/Users/topic modeling/topic modeling")
# read the questions file and tags file
train = read_csv("train.csv")
# selected only top 40000 records for memory constarint
train = train[1:40000,]
# check the tags
tags = data.frame(table(train$Tag))
names(tags) = c("Tags", "Count")
tags = tags[order(-tags$Count),]
print(head(tags))
# selected only top 15 tags and related data for processing
tags = tags$Tags[1:15]
train = subset(train, train$Tag %in% tags)
train$TagId = match(train$Tag,tags)
print(nrow(train))
# 90% we took for training
x = round(nrow(train) * 0.9)
# cleaning the data
train$Title = toupper(train$Title)
train$Title = gsub("[<].*[>]", "", as.character(train$Title))
train$Title = gsub("amp;amp", "", train$Title)
train$Title = gsub("(RT|via)((?:\b\W*@\w ) )", "", train$Title)
train$Title = gsub("@\w ", "", train$Title)
train$Title = gsub("[[:punct:]]", "", train$Title)
train$Title = gsub("[[:digit:]]", "", train$Title)
train$Title = gsub("http\w ", "", train$Title)
train$Title = gsub("[ t]{2,}", "", train$Title)
train$Title = gsub("^\s |\s $", "", train$Title)
# create document matrix
matrix <- create_matrix(train["Title"], language="english", weighting=tm::weightTfIdf)
container <- create_container(matrix,train$TagId,trainSize=1:x, testSize=(x 1):nrow(train),virgin=FALSE)
# create maxent model using SVM
maxent_model <- train_models(container,algorithms=c("SVM"))
maxent_results <- classify_models(container,maxent_model)
# test the model on test data
maxenttestData = train[(x 1):nrow(train),]
maxenttestData = data.frame(maxenttestData, maxent_results)
write.csv(maxenttestData, "MAXENT.csv", row.names = FALSE)
save(maxent_model, file = "maxent.rda")
new = read_csv("new.csv")
newtestdata= new[1:nrow(new),]
#print(newtestdata)
load("maxent.rda")
predict(maxent_model, newdata = newtestdata)
этот код показывает ошибку «Ошибка в UseMethod («predict»):
нет применимого метода для «predict», применяемого к объекту класса «list»»
Комментарии:
1. Используйте
predict
функцию, в которой вам нужно будет передать объект модели и тестовые данные после разработки объекта с той же структурой, которую вы использовали во время обучения2. можете ли вы предоставить мне пример кода?
3. приведите мне какой-нибудь пример, пожалуйста
4. пожалуйста, предоставьте мне код моей проблемы
5. Поскольку вы используете SVM, вы можете посмотреть эту ссылку