【发布时间】:2016-03-29 20:32:38
【问题描述】:
这是我第一次使用 RTextTools。我必须对一组文本文档实施 SVM 分类。我正在关注本教程。
http://journal.r-project.org/archive/2013-1/collingwood-jurka-boydstun-etal.pdf
我正在逐步向您提供我的代码。
首先我读取了我的数据并给出了一个索引文件。索引文件包含所有要分类的文本文档的列表以及它们各自的标签。例如,如果存在属于 X 类型的文件 abc.txt,则索引文件会将其存储为 abc.txt,X 等。
data = read_data('C:/Users/dell/Dropbox/Bundeli/corpus/wob/sklearn/folder', type=c('folder'), index = 'C:/Users/dell/Dropbox/Bundeli/corpus/wob/sklearn/index.txt')
其次,我创建了一个文档术语矩阵。
doc_matrix <- create_matrix(data, language="english", removeNumbers=TRUE, stemWords=TRUE, removeSparseTerms=.8)
第三,我创建一个容器来容纳
container <- create_container(doc_matrix, data$genre, trainSize=1:93, testSize=94:116, virgin=FALSE)
这里,data$genre 是一个标签,其中每个文档都有它的流派标签,它们按照精确的顺序给出,像索引一样对齐。
但是现在,当我尝试使用以下代码在容器上训练 SVM 时,
SVM <- train_model(container, "SVM")
它给了我这个错误。:-
Error in svm.default(x = container@training_matrix, y = container@training_codes, : x and y don't match.
当我看到“容器”的结构时,它显示我的训练代码是空的。像这样。
Slot "training_codes":
factor(0)
Levels:
Slot "testing_codes":
factor(0)
Levels:
如果您愿意,我可以向您展示对象“容器”的完整结构,但这不应该发生。有人可以请,请帮忙吗?我一直在拼命地寻找答案。会不会是read_data的索引文件有问题,还是data$genre变量有问题?这些是新事物,我可能弄错了。我将不胜感激。
***已解决****
按照@Theja 的建议,检查了str(data)。然后改成如下:
doc_matrix <- create_matrix(data, language="english", removeNumbers=TRUE, stemWords=TRUE, removeSparseTerms=.8)
这也被改变了:
container <- create_container(doc_matrix, data$genre, trainSize=1:93, testSize=94:116, virgin=FALSE)
【问题讨论】: