8

我试图将文本文档分类为多个类别。我下面的代码工作正常

matrix[[i]] <- create_matrix(trainingdata[[i]][,1], language="english",removeNumbers=FALSE,stemWords=FALSE,weighting=weightTf,minWordLength=3)                              
container[[i]] <- create_container(matrix[[i]],trainingdata[[i]][,2],trainSize=1:50,testSize=51:100) ,
models[[i]] <- train_models(container[[i]], algorithms=c("MAXENT","SVM"))
results[[i]] = classify_models(container[[i]],models[[i]])

当我尝试使用以下代码获取精度、召回率、准确度值时:

analytic[[i]]  <- create_analytics(container[[i]], results[[i]])

我收到以下错误:

Error in `row.names<-.data.frame`(`*tmp*`, value = c(NA_real_, NA_real_ : 
  duplicate 'row.names' are not allowed

Categories的是text格式。如果我将它们转换categoriesNumeric- 上面的代码可以正常工作。

是否有解决方法来保持类别的text格式并获得精确度、召回率、准确度值。

我的目标是获得多类分类器的精度、召回率、准确率值和混淆矩阵。是否有任何其他包可以获取多类文本分类器的上述值(一个与全部)

4

2 回答 2

8

正如 user3294343 评论的那样,它对我有用,将我的类字段转换为一个因子,然后转换为数字,如下所示:

doc_matrix <- create_matrix(dataset.arff$text, language="english", removeNumbers=TRUE, stemWords=TRUE, removeSparseTerms=.998)
container <- create_container(doc_matrix, as.numeric(factor(dataset.arff$"@@class@@")), trainSize=1:1500, testSize=1501:1999, virgin=FALSE)

这为我解决了错误。

于 2014-12-16T00:38:41.167 回答
0

上面提到的技巧对我有用,转换为因子

matrix <- create_matrix(combinedDF["error"], language="english", 
                    removeNumbers=TRUE, stemWords=FALSE, weighting=tm::weightTfIdf)
len <- dim(combinedDF)[1]
container <- create_container(matrix,as.numeric(factor(combinedDF$class)),trainSize=1:len, testSize=1:len, 
                          virgin=TRUE)
maxent_model <- train_model(container,"MAXENT")
maxent_results <- classify_model(container,maxent_model)
analytics <- create_analytics(container, maxent_results, b=1)
于 2016-02-04T05:47:22.213 回答