我正在尝试使用 KNN 算法对一组文本文件进行分类,无论它属于 A 类还是 B 类
这是我得到的错误
> knn.pred <- knn(tdm.stack.nl, tdm.stack.nl_test, tdm.cand)
knn 中的错误(tdm.stack.nl,tdm.stack.nl_test,tdm.cand):“测试”和“火车”的暗淡不同
> dim(tdm.stack.nl)
[1] 184 1599
> dim(tdm.stack.nl_test)
[1] 1 992
很明显,训练数据集使用的单词数量与训练不同。我怎样才能避免这种情况?
我想提一下,当我将训练和测试数据集手动划分为(70:30)比率时,我得到了这个错误。但是,如果我使用采样方法划分训练和测试数据集,我不会收到此错误。
> # create hold-out
> set.seed(500)
> train.idx <- sample(nrow(tdm.stack), ceiling(nrow(tdm.stack) * 0.7))
> test.idx <- (1:nrow(tdm.stack))[-train.idx]
>
> # create model - knn clustering
> tdm.cand <- tdm.stack[, "targetcandidate"]
> tdm.stack.nl <- tdm.stack[, !colnames(tdm.stack) %in% "targetcandidate"]
>
> # set up model
> knn.pred <- knn(tdm.stack.nl[train.idx,], tdm.stack.nl[test.idx,], tdm.cand[train.idx])
> dim(tdm.stack.nl[train.idx,])
[1] 129 1599
> dim(tdm.stack.nl[test.idx,])
[1] 55 1599
但是这种方法对我不起作用,因为我想使用之前构建的模型对文档进行实时分类。
请帮忙。如果您需要任何其他信息,请告诉我。阿伦