用DocumentTerm矩阵进行R KNN分类

用DocumentTerm矩阵进行R KNN分类,r,R,我给出了R的第一步,现在我正在测试KNN分类方法(包类),但我很难让它工作 我有两份文件,一份用于培训,另一份用于测试 我想我做得很好 ## Test KNN Classification train = dtm_control_tfidf_treino # train set from 1:7 test = dtm_control_tfidf_teste # test set from 8:10 cl = factor(dtm_control_tfidf_treino$class[1:7

我给出了R的第一步,现在我正在测试KNN分类方法(包类),但我很难让它工作

我有两份文件,一份用于培训,另一份用于测试

我想我做得很好

## Test KNN Classification
train = dtm_control_tfidf_treino # train set from 1:7
test = dtm_control_tfidf_teste   # test set from 8:10
cl = factor(dtm_control_tfidf_treino$class[1:7])
x = knn(train, test, cl, k = 3, prob = TRUE)
attributes(.Last.value)
我发现了错误

> x = knn(train, test, cl, k = 3, prob = TRUE)
Error in knn(train, test, cl, k = 3, prob = TRUE) : 
'train' and 'class' have different lengths
我真的不明白该怎么做。如果semeone能给我一些如何做好这个过程的提示,那就太好了


如果您需要更多数据或wtv,只需询问

如果您对语料库进行子集,每个DTM将有不同的单词。这不是你想要的。您希望他们共享一个通用术语列表。因此,取而代之的是,使用所有文档构建DTM,然后将DTM子集以生成测试/训练集。下面是一个使用内置数据集的示例

reut21578 <- system.file("texts", "crude", package = "tm")
cc<-VCorpus(DirSource(reut21578), list(reader = readReut21578XMLasPlain))

dtm<-DocumentTermMatrix(cc)

train<-dtm[1:7,]
test<-dtm[8:10,]

knn(train,test,factor(letters[1:7]), k=3, prob=T)

reut21578根据您的数据,
train
似乎包含3个文档,但您有7个类,因此它们的长度不同,您会得到一个错误。
cl
变量和
train
object.lool中的文档之间应该有一个1:1的映射,真是个麻烦,我忘了更改一些代码了。直到现在,我已经做出了改变:现在我犯了错误。knn(列车,测试,cl,k=3,prob=TRUE)中的错误:“测试”和“列车”的dims@andrealmeida发布了头部(测试)和头部(列车)以及dim(测试)和dim(列车)的结果。这是完全相同的图片,不是吗?有什么不同?@AndrewCassidy head()对DocumentTermMatrices不起作用,明白了。这需要耐心。