2017-03-06 47 views
0

我有一些虚拟数据由99行数据组成,一列是 自由文本数据,一列是cateogry。它已被分类为客户服务或未与客户服务相关。KNN使用R - 在生产

我将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 

那么我可以计算出准确度,生成交叉表或预测出口测试模型的准确性。

我现在正努力想要得到我的头,我是如何使用新数据前进的模型。

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

也许我只是误解下一个过程。

感谢,

回答

0

你刚发现的保持退出测试中的表现用同样的方法:

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

在KNN模型,训练数据本质上是模型的一部分。既然它只是找到最近的训练点,如果你没有他们的坐标,你怎么知道这些是什么?这就是说,你为什么要使用KNN模型而不是更现代的东西(支持向量机,随机森林,Boosted树,神经网络)? KNN模型与数据点的数量相差甚远。

+0

感谢您的回应,我确信我尝试过,并且给了我一个错误,所以认为我错了。我会再去一次。关于使用KNN。唯一真正的原因是,这在调查谷歌时似乎最合适。我对文本分析完全陌生。 – Richard