我正在尝试在R中训练Naive Bayes分类器,根据它们与多个单词包的相似性对文本字符串进行分类。
以下是一些复制我的问题的简化代码:
library(tm)
library(e1071)
df <- data.frame(class = c(1,1,1,2,2,2,3,3,3,3,3,3,3,3),
text = c("sirloin steak",
"aaa steak",
"new york strip steak",
"sour patch kids",
"cherry blasters",
"popsicles",
"donuts",
"cakes",
"bread",
"sourdough",
"rye",
"rolled oats",
"loaf",
"bagels"),
stringsAsFactors = FALSE)
corpus <- Corpus(DataframeSource(df))
dtm <- DocumentTermMatrix(corpus)
dtm_matrix <- as.matrix(dtm)
labels <- as.factor(df$class)
clf <- naiveBayes(dtm_matrix, labels)
predict(clf, "steak")
返回的输出如下所示:
[1] 3
Levels: 1 2 3
当牛排明显属于头等舱时。
我无法弄清楚我哪里出错了。每当我看到传递给朴素贝叶斯的其他文档术语矩阵的例子时,它都以同样的方式完成。
我可能会出错的任何想法?