RTextTools中的Create_Analytics

时间:2014-05-09 09:40:24

标签: r precision text-mining document-classification confusion-matrix

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

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。 如果我将categories转换为Numeric - 上述代码可以正常工作。

是否有办法将类别保持为text格式并获得精确度,召回率和准确度值。

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

2 个答案:

答案 0 :(得分: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)

这解决了我的错误。

答案 1 :(得分: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)