KNN 使用 R - 在生产中

KNN using R - in Production

我有一些虚拟数据,其中包含 99 行数据,其中一列是 自由文本数据,一列是类别。它已被分类为与客户服务相关或与客户服务无关。

我将 99 行数据传递到我的 R 脚本中,创建了一个语料库,清理并解析了我的数据并将其转换为 DocumentTermMatrix。然后我将我的 DTM 转换为数据框以使其更易于查看。我将该类别绑定到我的新数据框。然后我将它按 50/50 分成 50 行到我的训练集,49 行到我的测试集。类别我也拉出来了

train <- sample(nrow(mat.df), ceiling(nrow(mat.df) * .5))
test <- (1:nrow(mat.df))[- train]
cl <- mat.df[, "category"]

然后我创建了一个模型,其中删除了类别列并将这个新模型传递给我的 KNN

knn.pred <- knn(modeldata[train, ], modeldata[test, ], cl[train])
conf.mat <- table("Predictions" = knn.pred, Actual = cl[test])
conf.mat

然后我可以计算出准确性,生成交叉 table 或导出预测以测试模型的准确性。

我目前正在努力解决的问题是,我如何使用该模型来获取新数据。

因此,如果我有 10 行新的自由文本数据尚未被手动分类,那么我如何 运行 我刚刚创建的 knn 模型来对这些额外数据进行分类?

可能是我对接下来的流程有误解

谢谢,

与您刚刚找到的保持测试性能相同的方法:

knn.pred.newdata <- knn(modeldata[train, ], completely_new_data, cl[train])

在 KNN 模型中,训练数据本质上是模型的一部分。因为它只是找到最近的训练点,如果你没有它们的坐标,你怎么知道它们是哪些?

也就是说,您为什么要使用 KNN 模型而不是更现代的模型(SVM、随机森林、提升树、神经网络)? KNN 模型在数据点数量方面的扩展性极差。